diff options
author | Valentin Rothberg <vrothberg@redhat.com> | 2022-09-12 15:22:21 +0200 |
---|---|---|
committer | Valentin Rothberg <vrothberg@redhat.com> | 2022-09-13 10:56:44 +0200 |
commit | c8c2aab50d73ab767b8eb720b4d1abbc9bb36b62 (patch) | |
tree | 1b80152569dd43811ec19d40fbba4c22750a084d /libpod | |
parent | 1635fe8620fa454647cf7db2af9ed0c9b52eacfb (diff) | |
download | podman-c8c2aab50d73ab767b8eb720b4d1abbc9bb36b62.tar.gz podman-c8c2aab50d73ab767b8eb720b4d1abbc9bb36b62.tar.bz2 podman-c8c2aab50d73ab767b8eb720b4d1abbc9bb36b62.zip |
health checks: restart timers
Restart the health-check timers instead of starting them. This will
surpress annoying errors stating that an already running timer cannot be
started anymore.
Also make sure that the transient units/timers are stopped and removed
when stopping a container.
Fixes: #15691
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_internal.go | 6 | ||||
-rw-r--r-- | libpod/healthcheck_linux.go | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libpod/container_internal.go b/libpod/container_internal.go index 227bb7f1f..d61812cb7 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -1286,6 +1286,12 @@ func (c *Container) stop(timeout uint) error { c.lock.Unlock() } + if c.config.HealthCheckConfig != nil { + if err := c.removeTransientFiles(context.Background()); err != nil { + logrus.Error(err.Error()) + } + } + stopErr := c.ociRuntime.StopContainer(c, timeout, all) if !c.batched { diff --git a/libpod/healthcheck_linux.go b/libpod/healthcheck_linux.go index 3fb6dfb91..6948f976a 100644 --- a/libpod/healthcheck_linux.go +++ b/libpod/healthcheck_linux.go @@ -70,7 +70,7 @@ func (c *Container) startTimer() error { startFile := fmt.Sprintf("%s.service", c.ID()) startChan := make(chan string) - if _, err := conn.StartUnitContext(context.Background(), startFile, "fail", startChan); err != nil { + if _, err := conn.RestartUnitContext(context.Background(), startFile, "fail", startChan); err != nil { return err } if err := systemdOpSuccessful(startChan); err != nil { |