From 673f911f969fea9790d812046170dba4547ad2b9 Mon Sep 17 00:00:00 2001 From: Peter Hunt Date: Tue, 15 Sep 2020 11:45:44 -0400 Subject: [PATCH] server: cleanup container in runtime after failed creation otherwise, we leak containers in runc Signed-off-by: Peter Hunt --- server/container_create.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/container_create.go b/server/container_create.go index 2fdfd0e2789..efd93e3007a 100644 --- a/server/container_create.go +++ b/server/container_create.go @@ -539,6 +539,14 @@ func (s *Server) CreateContainer(ctx context.Context, req *pb.CreateContainerReq if err := s.createContainerPlatform(newContainer, sb.CgroupParent()); err != nil { return nil, err } + defer func() { + if retErr != nil { + log.Infof(ctx, "createCtr: removing container ID %s from runtime", ctr.ID()) + if err2 := s.Runtime().DeleteContainer(newContainer); err2 != nil { + log.Warnf(ctx, "failed to delete container in runtime %s: %v", ctr.ID(), err) + } + } + }() if err := s.ContainerStateToDisk(newContainer); err != nil { log.Warnf(ctx, "unable to write containers %s state to disk: %v", newContainer.ID(), err)