Browse Source

Merge pull request #44014 from corhere/healthcheck-kill-timeout

Un-skip TestHealthCheckProcessKilled on Windows+containerd and stop health checks earlier upon container exit.
Cory Snider 2 năm trước cách đây
mục cha
commit
e8c4740108
2 tập tin đã thay đổi với 5 bổ sung4 xóa
  1. 5 3
      daemon/monitor.go
  2. 0 1
      integration/container/health_test.go

+ 5 - 3
daemon/monitor.go

@@ -28,6 +28,11 @@ func (daemon *Daemon) setStateCounter(c *container.Container) {
 func (daemon *Daemon) handleContainerExit(c *container.Container, e *libcontainerdtypes.EventInfo) error {
 	var exitStatus container.ExitStatus
 	c.Lock()
+
+	// Health checks will be automatically restarted if/when the
+	// container is started again.
+	daemon.stopHealthchecks(c)
+
 	tsk, ok := c.Task()
 	if ok {
 		ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
@@ -72,9 +77,6 @@ func (daemon *Daemon) handleContainerExit(c *container.Container, e *libcontaine
 		restart = false
 	}
 
-	// cancel healthcheck here, they will be automatically
-	// restarted if/when the container is started again
-	daemon.stopHealthchecks(c)
 	attributes := map[string]string{
 		"exitCode": strconv.Itoa(exitStatus.ExitCode),
 	}

+ 0 - 1
integration/container/health_test.go

@@ -96,7 +96,6 @@ while true; do sleep 1; done
 
 // TestHealthCheckProcessKilled verifies that health-checks exec get killed on time-out.
 func TestHealthCheckProcessKilled(t *testing.T) {
-	skip.If(t, testEnv.RuntimeIsWindowsContainerd(), "FIXME: Broken on Windows + containerd combination")
 	defer setupTest(t)()
 	ctx := context.Background()
 	apiClient := testEnv.APIClient()