From e5910c9b887a197d197a60c06b54013653c79927 Mon Sep 17 00:00:00 2001 From: Evan Foster Date: Mon, 20 Jul 2020 11:26:47 -0600 Subject: [PATCH] sandbox: Stop and clean up containers that fail to create A container that is created and added to a sandbox can still fail the final creation steps. In this case, the container must be stopped and have its resources cleaned up to prevent leaking sandbox mounts. Forward port of https://github.com/kata-containers/runtime/pull/2826 Fixes #2816 Signed-off-by: Evan Foster --- src/runtime/virtcontainers/sandbox.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 82e0a3ac12..c7cfedb574 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1,4 +1,5 @@ // Copyright (c) 2016 Intel Corporation +// Copyright (c) 2020 Adobe Inc. // // SPDX-License-Identifier: Apache-2.0 // @@ -1201,6 +1202,14 @@ func (s *Sandbox) CreateContainer(contConfig ContainerConfig) (VCContainer, erro defer func() { // Rollback if error happens. if err != nil { + logger := s.Logger().WithFields(logrus.Fields{"container-id": c.id, "sandox-id": s.id, "rollback": true}) + logger.Warning("Cleaning up partially created container") + + if err2 := c.stop(true); err2 != nil { + logger.WithError(err2).Warning("Could not delete container") + } + + logger.Debug("Removing stopped container from sandbox store") s.removeContainer(c.id) } }()