From f96039fcd94c5bc75dcec297668418811d60e785 Mon Sep 17 00:00:00 2001 From: jingrui Date: Tue, 19 Feb 2019 11:53:41 +0800 Subject: [PATCH 24/27] create: cleanup runc dirty files on start reason: add check before cleanup runtime dirty files. Change-Id: I6f218fd8d19ed65d8b13ae1ea744b80574279f83 Signed-off-by: jingrui --- hack/containerd.spec | 2 +- vendor/github.com/containerd/go-runc/runc.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hack/containerd.spec b/hack/containerd.spec index f39c57a..869012a 100644 --- a/hack/containerd.spec +++ b/hack/containerd.spec @@ -3,7 +3,7 @@ Version: 1.2.0 Name: containerd -Release: 5%{?dist} +Release: 6%{?dist} Summary: An industry-standard container runtime License: ASL 2.0 URL: https://containerd.io diff --git a/vendor/github.com/containerd/go-runc/runc.go b/vendor/github.com/containerd/go-runc/runc.go index fc64e8a..e66ea5b 100644 --- a/vendor/github.com/containerd/go-runc/runc.go +++ b/vendor/github.com/containerd/go-runc/runc.go @@ -30,6 +30,7 @@ import ( "strings" "syscall" "time" + "github.com/sirupsen/logrus" specs "github.com/opencontainers/runtime-spec/specs-go" ) @@ -140,7 +141,10 @@ func (o *CreateOpts) args() (out []string, err error) { // Create creates a new container and returns its pid if it was created successfully func (r *Runc) Create(context context.Context, id, bundle string, opts *CreateOpts) error { - r.Delete(context, id, &DeleteOpts{Force: true}) + if _, err := os.Stat(filepath.Join(r.Root, id)); err == nil { + logrus.Warnf("cleanup residue runtime with bundle %s root=%s", bundle, r.Root) + r.Delete(context, id, &DeleteOpts{Force: true}) + } args := []string{"create", "--bundle", bundle} if opts != nil { -- 2.7.4.3