diff options
author | Matthew Heon <matthew.heon@gmail.com> | 2018-09-23 18:04:29 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@gmail.com> | 2018-10-02 12:05:22 -0400 |
commit | 2c7f97d5a782d35efc195baf7a7ca9016ca05409 (patch) | |
tree | 2fe809fca125f2b1f425ba4a23e23a7ed10dbbae /libpod/runtime_ctr.go | |
parent | 89c5804fe0ca3ece7587adb5d5c974dbc494f721 (diff) | |
download | podman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.tar.gz podman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.tar.bz2 podman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.zip |
Add ContainerStateExited and OCI delete() in cleanup()
To work better with Kata containers, we need to delete() from the
OCI runtime as a part of cleanup, to ensure resources aren't
retained longer than they need to be.
To enable this, we need to add a new state to containers,
ContainerStateExited. Containers transition from
ContainerStateStopped to ContainerStateExited via cleanupRuntime
which is invoked as part of cleanup(). A container in the Exited
state is identical to Stopped, except it has been removed from
the OCI runtime and thus will be handled differently when
initializing the container.
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Diffstat (limited to 'libpod/runtime_ctr.go')
-rw-r--r-- | libpod/runtime_ctr.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go index 6c487e367..b8a8b6c20 100644 --- a/libpod/runtime_ctr.go +++ b/libpod/runtime_ctr.go @@ -311,7 +311,7 @@ func (r *Runtime) removeContainer(ctx context.Context, c *Container, force bool) c.valid = false // Clean up network namespace, cgroups, mounts - if err := c.cleanup(); err != nil { + if err := c.cleanup(ctx); err != nil { if cleanupErr == nil { cleanupErr = err } else { @@ -335,7 +335,8 @@ func (r *Runtime) removeContainer(ctx context.Context, c *Container, force bool) // Delete the container // Only do this if we're not ContainerStateConfigured - if we are, // we haven't been created in the runtime yet - if c.state.State != ContainerStateConfigured { + if c.state.State != ContainerStateConfigured && + c.state.State != ContainerStateExited { if err := c.delete(ctx); err != nil { if cleanupErr == nil { cleanupErr = err |