From d13733a390a987006bd5febb7d28a2d1c7873af2 Mon Sep 17 00:00:00 2001 From: zhangyu235 Date: Thu, 30 May 2019 09:27:00 +0800 Subject: [PATCH] containerd: fix shim std logs not close after shim exit reason:fix shim std logs not close after shim exit Change-Id: I980fb17b1d46de099b81529ea46681cf9f4bf09c Signed-off-by: zhangyu235 --- runtime/v1/linux/runtime.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/runtime/v1/linux/runtime.go b/runtime/v1/linux/runtime.go index af823b2..66914fe 100644 --- a/runtime/v1/linux/runtime.go +++ b/runtime/v1/linux/runtime.go @@ -361,7 +361,9 @@ func (r *Runtime) loadTasks(ctx context.Context, ns string) ([]*Task, error) { ctx = namespaces.WithNamespace(ctx, ns) pid, _ := runc.ReadPidFile(filepath.Join(bundle.path, proc.InitPidFile)) log.G(ctx).Infof("load-task %s/%s/%s Pid=%d", r.state, ns, id, pid) + shimExit := make(chan struct{}) s, err := bundle.NewShimClient(ctx, ns, ShimConnect(r.config, func() { + close(shimExit) err := r.cleanupAfterDeadShim(ctx, bundle, ns, id, pid) if err != nil { log.G(ctx).WithError(err).WithField("bundle", bundle.path). @@ -426,6 +428,18 @@ func (r *Runtime) loadTasks(ctx context.Context, ns string) ([]*Task, error) { } go io.Copy(os.Stderr, shimStderrLog) + go func() { + select { + case <-shimExit: + if shimStdoutLog != nil { + shimStdoutLog.Close() + } + if shimStderrLog != nil { + shimStderrLog.Close() + } + } + }() + t, err := newTask(id, ns, pid, s, r.events, r.tasks, bundle) if err != nil { log.G(ctx).WithError(err).Error("loading task type") @@ -443,7 +457,7 @@ func (r *Runtime) loadTasks(ctx context.Context, ns string) ([]*Task, error) { if !events.ExitPending(ns, t.id, uint32(pid)) { events.ExitAddFile(ns, events.ExitFile(t.id, uint32(pid), uint32(events.ExitStatusDefault)), "cleanup dirty task") } - go func(){ + go func() { log.G(ctx).Infof("delete force %s start, Pid=%d(exiting)", id, pid) _, err := t.DeleteForce(ctx, uint32(pid)) log.G(ctx).Infof("delete force %s done, Pid=%d(exiting) error=%v", id, pid, err) -- 2.7.4.3