mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Set unpasued state when receiving 'stateExit' event
Description: 1. start a container with restart=always. `docker run -d --restart=always ubuntu sleep 3` 2. container init process exits. 3. use `docker pause <id>` to pause this container. if the pause action is before cgroup data is removed and after the init process died. `Pause` operation will success to write cgroup data, but actually do not freeze any process. And then docker received pause event and stateExit event from containerd, the docker state will be Running(paused), but the container is free running. Then we can not remove it, stop it , pause it and unpause it. Signed-off-by: Wentao Zhang <zhangwentao234@huawei.com>
This commit is contained in:
parent
7117d5ef25
commit
fe1b4cfba6
1 changed files with 2 additions and 0 deletions
|
@ -278,6 +278,7 @@ func (s *State) SetRunning(pid int, initial bool) {
|
|||
s.ErrorMsg = ""
|
||||
s.Running = true
|
||||
s.Restarting = false
|
||||
s.Paused = false
|
||||
s.ExitCodeValue = 0
|
||||
s.Pid = pid
|
||||
if initial {
|
||||
|
@ -304,6 +305,7 @@ func (s *State) SetRestarting(exitStatus *ExitStatus) {
|
|||
// all the checks in docker around rm/stop/etc
|
||||
s.Running = true
|
||||
s.Restarting = true
|
||||
s.Paused = false
|
||||
s.Pid = 0
|
||||
s.FinishedAt = time.Now().UTC()
|
||||
s.setFromExitStatus(exitStatus)
|
||||
|
|
Loading…
Add table
Reference in a new issue