Skip to content

Commit 42c783a

Browse files
Merge pull request moby#25185 from crosbymichael/cherry-restore
Check if the container is running if no event
2 parents 58d0d5b + 2650b1b commit 42c783a

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

libcontainerd/client_linux.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -505,12 +505,20 @@ func (clnt *client) Restore(containerID string, options ...CreateOption) error {
505505
return err
506506
}
507507

508-
// If ev is nil, then we already consumed all the event of the
509-
// container, included the "exit" one.
510-
// Thus we return to avoid overriding the Exit Code.
511508
if ev == nil {
512-
logrus.Warnf("libcontainerd: restore was called on a fully synced container (%s)", containerID)
513-
return nil
509+
if _, err := clnt.getContainer(containerID); err == nil {
510+
// If ev is nil and the container is running in containerd,
511+
// we already consumed all the event of the
512+
// container, included the "exit" one.
513+
// Thus we return to avoid overriding the Exit Code.
514+
logrus.Warnf("libcontainerd: restore was called on a fully synced container (%s)", containerID)
515+
return nil
516+
}
517+
// the container is not running so we need to fix the state within docker
518+
ev = &containerd.Event{
519+
Type: StateExit,
520+
Status: 1,
521+
}
514522
}
515523

516524
// get the exit status for this container

0 commit comments

Comments
 (0)