From 112c2ef89b1085e95959285ce5328af5d74ba8db Mon Sep 17 00:00:00 2001 From: xueshaojia Date: Thu, 14 Feb 2019 10:48:14 +0800 Subject: [PATCH 19/27] restore: check shim alive when containerd is restarted reason: fix docker_containerd-shim:testCE_docker_containerd_shim_ABN.021.sh When containerd is restarted, it will load all tasks.In some cases, the containerd-shim is killed and the sock file will exist for a while. Containerd should check the containerd-shim is available using the sock file. If the containerd-shim server not responses, do r.cleanupAfterDeadShim Change-Id: I448c8caefa8c1252bd5cdcff79deb8eff1005903 Signed-off-by: xueshaojia --- runtime/v1/linux/runtime.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/runtime/v1/linux/runtime.go b/runtime/v1/linux/runtime.go index 123d675..477cda0 100644 --- a/runtime/v1/linux/runtime.go +++ b/runtime/v1/linux/runtime.go @@ -343,6 +343,21 @@ func (r *Runtime) loadTasks(ctx context.Context, ns string) ([]*Task, error) { } continue } + ctxContact, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + alive, err := s.IsAlive(ctxContact) + if !alive { + log.G(ctx).WithError(err).WithFields(logrus.Fields{ + "id": id, + "namespace": ns, + }).Error("contacting to shim") + err := r.cleanupAfterDeadShim(ctx, bundle, ns, id, pid) + if err != nil { + log.G(ctx).WithError(err).WithField("bundle", bundle.path). + Error("cleaning up after dead shim") + } + continue + } logDirPath := filepath.Join(r.root, ns, id) -- 2.7.4.3