Change-Id: I4dc92059d90415199fcd143d75cc68cfdb67c430 Signed-off-by: jingrui <jingrui@huawei.com>
49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
From ef64f4dd5d532b550bb68f60e6373e139fdf5382 Mon Sep 17 00:00:00 2001
|
|
From: xiadanni <xiadanni1@huawei.com>
|
|
Date: Fri, 15 Jan 2021 11:23:04 +0800
|
|
Subject: [PATCH] docker: wait io with timeout when process Start failed
|
|
|
|
Signed-off-by: xiadanni <xiadanni1@huawei.com>
|
|
---
|
|
.../vendor/github.com/containerd/containerd/process.go | 17 ++++++++++++++---
|
|
1 file changed, 14 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/components/engine/vendor/github.com/containerd/containerd/process.go b/components/engine/vendor/github.com/containerd/containerd/process.go
|
|
index ff7d838..4d0dca9 100644
|
|
--- a/components/engine/vendor/github.com/containerd/containerd/process.go
|
|
+++ b/components/engine/vendor/github.com/containerd/containerd/process.go
|
|
@@ -26,6 +26,7 @@ import (
|
|
"github.com/containerd/containerd/cio"
|
|
"github.com/containerd/containerd/errdefs"
|
|
"github.com/pkg/errors"
|
|
+ "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// Process represents a system process
|
|
@@ -111,9 +112,19 @@ func (p *process) Start(ctx context.Context) error {
|
|
ExecID: p.id,
|
|
})
|
|
if err != nil {
|
|
- p.io.Cancel()
|
|
- p.io.Wait()
|
|
- p.io.Close()
|
|
+ done := make(chan struct{})
|
|
+ go func() {
|
|
+ p.io.Cancel()
|
|
+ p.io.Wait()
|
|
+ p.io.Close()
|
|
+ close(done)
|
|
+ }()
|
|
+ select {
|
|
+ case <-time.After(30 * time.Second):
|
|
+ logrus.Warnf("process start failed with error %v, wait io close timeout, some fifo io may be dropped.", err)
|
|
+ case <-done:
|
|
+ // ok
|
|
+ }
|
|
return errdefs.FromGRPC(err)
|
|
}
|
|
p.pid = r.Pid
|
|
--
|
|
1.8.3.1
|
|
|