From 20390f65c487cfbe18e1f21650086a00e41eadff Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Thu, 7 Apr 2016 16:12:05 -0700 Subject: [PATCH] Fix restart monitor stopping on manual restart Signed-off-by: Tonis Tiigi --- container/container.go | 1 + integration-cli/docker_cli_restart_test.go | 30 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/container/container.go b/container/container.go index c9991629be..58892e7788 100644 --- a/container/container.go +++ b/container/container.go @@ -909,6 +909,7 @@ func (container *Container) FullHostname() string { func (container *Container) RestartManager(reset bool) restartmanager.RestartManager { if reset { container.RestartCount = 0 + container.restartManager = nil } if container.restartManager == nil { container.restartManager = restartmanager.New(container.HostConfig.RestartPolicy) diff --git a/integration-cli/docker_cli_restart_test.go b/integration-cli/docker_cli_restart_test.go index 297e16a169..12fe1c4e54 100644 --- a/integration-cli/docker_cli_restart_test.go +++ b/integration-cli/docker_cli_restart_test.go @@ -188,3 +188,33 @@ func (s *DockerSuite) TestRestartWithPolicyUserDefinedNetwork(c *check.C) { _, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo") c.Assert(err, check.IsNil) } + +func (s *DockerSuite) TestRestartPolicyAfterRestart(c *check.C) { + testRequires(c, SameHostDaemon) + + out, _ := runSleepingContainer(c, "-d", "--restart=always") + id := strings.TrimSpace(out) + c.Assert(waitRun(id), check.IsNil) + + dockerCmd(c, "restart", id) + + c.Assert(waitRun(id), check.IsNil) + + pidStr := inspectField(c, id, "State.Pid") + + pid, err := strconv.Atoi(pidStr) + c.Assert(err, check.IsNil) + + p, err := os.FindProcess(pid) + c.Assert(err, check.IsNil) + c.Assert(p, check.NotNil) + + err = p.Kill() + c.Assert(err, check.IsNil) + + err = waitInspect(id, "{{.RestartCount}}", "1", 30*time.Second) + c.Assert(err, check.IsNil) + + err = waitInspect(id, "{{.State.Status}}", "running", 30*time.Second) + c.Assert(err, check.IsNil) +}