diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-09-29 13:26:03 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-29 13:26:03 -0400 |
commit | 4b9cd9201b97c4ef4c6ef50d53f35757f1ddb187 (patch) | |
tree | c8e69e7090cb658564474fa295ea0c0a28d2521e /libpod/container.go | |
parent | a22a9a5218774ba809a60a650f10ff300551faa5 (diff) | |
parent | ccff77025c4ef6907c91c42cf84e1c92b65716ba (diff) | |
download | podman-4b9cd9201b97c4ef4c6ef50d53f35757f1ddb187.tar.gz podman-4b9cd9201b97c4ef4c6ef50d53f35757f1ddb187.tar.bz2 podman-4b9cd9201b97c4ef4c6ef50d53f35757f1ddb187.zip |
Merge pull request #11781 from vrothberg/spec
podman run - avoid calls to JSONDeepCopy
Diffstat (limited to 'libpod/container.go')
-rw-r--r-- | libpod/container.go | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/libpod/container.go b/libpod/container.go index 5c56ff036..4d15c04c5 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -774,9 +774,9 @@ func (c *Container) ExecSessions() ([]string, error) { return ids, nil } -// ExecSession retrieves detailed information on a single active exec session in -// a container -func (c *Container) ExecSession(id string) (*ExecSession, error) { +// execSessionNoCopy returns the associated exec session to id. +// Note that the session is not a deep copy. +func (c *Container) execSessionNoCopy(id string) (*ExecSession, error) { if !c.batched { c.lock.Lock() defer c.lock.Unlock() @@ -791,6 +791,17 @@ func (c *Container) ExecSession(id string) (*ExecSession, error) { return nil, errors.Wrapf(define.ErrNoSuchExecSession, "no exec session with ID %s found in container %s", id, c.ID()) } + return session, nil +} + +// ExecSession retrieves detailed information on a single active exec session in +// a container +func (c *Container) ExecSession(id string) (*ExecSession, error) { + session, err := c.execSessionNoCopy(id) + if err != nil { + return nil, err + } + returnSession := new(ExecSession) if err := JSONDeepCopy(session, returnSession); err != nil { return nil, errors.Wrapf(err, "error copying contents of container %s exec session %s", c.ID(), session.ID()) @@ -1095,7 +1106,7 @@ func (c *Container) AutoRemove() bool { if spec.Annotations == nil { return false } - return c.Spec().Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue + return spec.Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue } // Timezone returns the timezone configured inside the container. |