Merge pull request #43997 from thaJeztah/healthcheck_capture_logs

daemon: capture output of killed health checks
This commit is contained in:
Sebastiaan van Stijn 2022-09-02 10:48:22 +02:00 committed by GitHub
commit 0670621291
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View file

@ -134,9 +134,16 @@ func (p *cmdProbe) run(ctx context.Context, d *Daemon, cntr *container.Container
// Wait for probe to exit (it might take some time to call containerd to kill
// the process and we don't want dying probes to pile up).
<-execErr
var msg string
if out := output.String(); len(out) > 0 {
msg = fmt.Sprintf("Health check exceeded timeout (%v): %s", probeTimeout, out)
} else {
msg = fmt.Sprintf("Health check exceeded timeout (%v)", probeTimeout)
}
return &types.HealthcheckResult{
ExitCode: -1,
Output: fmt.Sprintf("Health check exceeded timeout (%v)", probeTimeout),
Output: msg,
End: time.Now(),
}, nil
case err := <-execErr:

View file

@ -102,13 +102,13 @@ func TestHealthCheckProcessKilled(t *testing.T) {
cID := container.Run(ctx, t, apiClient, func(c *container.TestContainerConfig) {
c.Config.Healthcheck = &containertypes.HealthConfig{
Test: []string{"CMD", "sh", "-c", "sleep 60"},
Test: []string{"CMD", "sh", "-c", `echo "logs logs logs"; sleep 60`},
Interval: 100 * time.Millisecond,
Timeout: 50 * time.Millisecond,
Retries: 1,
}
})
poll.WaitOn(t, pollForHealthCheckLog(ctx, apiClient, cID, "Health check exceeded timeout (50ms)"))
poll.WaitOn(t, pollForHealthCheckLog(ctx, apiClient, cID, "Health check exceeded timeout (50ms): logs logs logs\n"))
}
func pollForHealthCheckLog(ctx context.Context, client client.APIClient, containerID string, expected string) func(log poll.LogT) poll.Result {