v2: Call shim.Delete at first when create is failed
If the context is cancelled during `shim.Create()`, such as the client disconnects unexpectedly. The created shim will never be deleted. What's more, if the context is cancelled during `openShimLog()`, the fifo will be closed and block the shim output. Signed-off-by: Li Yuxuan <liyuxuan04@baidu.com>
This commit is contained in:
@@ -29,6 +29,7 @@ import (
|
||||
"github.com/containerd/containerd/metadata"
|
||||
"github.com/containerd/containerd/mount"
|
||||
"github.com/containerd/containerd/namespaces"
|
||||
"github.com/containerd/containerd/pkg/timeout"
|
||||
"github.com/containerd/containerd/platforms"
|
||||
"github.com/containerd/containerd/plugin"
|
||||
"github.com/containerd/containerd/runtime"
|
||||
@@ -154,8 +155,13 @@ func (m *TaskManager) Create(ctx context.Context, id string, opts runtime.Create
|
||||
}
|
||||
defer func() {
|
||||
if err != nil {
|
||||
shim.Shutdown(ctx)
|
||||
shim.Close()
|
||||
dctx, cancel := timeout.WithContext(context.Background(), cleanupTimeout)
|
||||
defer cancel()
|
||||
_, errShim := shim.Delete(dctx)
|
||||
if errShim != nil {
|
||||
shim.Shutdown(ctx)
|
||||
shim.Close()
|
||||
}
|
||||
}
|
||||
}()
|
||||
t, err := shim.Create(ctx, opts)
|
||||
|
Reference in New Issue
Block a user