mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #38364 from cpuguy83/fix_stale_container_on_start
Delete stale containerd object on start failure
This commit is contained in:
commit
fcb286895b
1 changed files with 15 additions and 2 deletions
|
@ -177,10 +177,23 @@ func (daemon *Daemon) containerStart(container *container.Container, checkpoint
|
|||
return err
|
||||
}
|
||||
|
||||
err = daemon.containerd.Create(context.Background(), container.ID, spec, createOptions)
|
||||
ctx := context.TODO()
|
||||
|
||||
err = daemon.containerd.Create(ctx, container.ID, spec, createOptions)
|
||||
if err != nil {
|
||||
if errdefs.IsConflict(err) {
|
||||
logrus.WithError(err).WithField("container", container.ID).Error("Container not cleaned up from containerd from previous run")
|
||||
// best effort to clean up old container object
|
||||
daemon.containerd.DeleteTask(ctx, container.ID)
|
||||
if err := daemon.containerd.Delete(ctx, container.ID); err != nil && !errdefs.IsNotFound(err) {
|
||||
logrus.WithError(err).WithField("container", container.ID).Error("Error cleaning up stale containerd container object")
|
||||
}
|
||||
err = daemon.containerd.Create(ctx, container.ID, spec, createOptions)
|
||||
}
|
||||
if err != nil {
|
||||
return translateContainerdStartErr(container.Path, container.SetExitCode, err)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(mlaventure): we need to specify checkpoint options here
|
||||
pid, err := daemon.containerd.Start(context.Background(), container.ID, checkpointDir,
|
||||
|
|
Loading…
Reference in a new issue