diff options
author | Brent Baude <bbaude@redhat.com> | 2021-12-23 11:31:00 -0600 |
---|---|---|
committer | Brent Baude <bbaude@redhat.com> | 2021-12-26 11:53:44 -0600 |
commit | 7117d5605a801cb5bf3893063f37b6b5a1e1158a (patch) | |
tree | 504160ab279e8c1ce9dc9e7df742298b6546a3dd /libpod | |
parent | e06631d6c22f4d5b7a62f70ccdf623379a9d5fe7 (diff) | |
download | podman-7117d5605a801cb5bf3893063f37b6b5a1e1158a.tar.gz podman-7117d5605a801cb5bf3893063f37b6b5a1e1158a.tar.bz2 podman-7117d5605a801cb5bf3893063f37b6b5a1e1158a.zip |
.service file removal on failure
Prodding bz #2024229 a little more, it turns out the service file is NOT
deleted when it is in a failed state (i.e the healtch check has failed
for some reason). The state must be reset before the service is stopped
on container removal and then the files will be removed properly.
BZ#:2024229
[NO NEW TESTS NEEDED]
Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/healthcheck_linux.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libpod/healthcheck_linux.go b/libpod/healthcheck_linux.go index 2c19e0a61..a1f3e8491 100644 --- a/libpod/healthcheck_linux.go +++ b/libpod/healthcheck_linux.go @@ -73,6 +73,16 @@ func (c *Container) removeTransientFiles(ctx context.Context) error { defer conn.Close() timerFile := fmt.Sprintf("%s.timer", c.ID()) serviceFile := fmt.Sprintf("%s.service", c.ID()) + + // If the service has failed (the healthcheck has failed), then + // the .service file is not removed on stopping the unit file. If + // we check the properties of the service, it will automatically + // reset the state. But checking the state takes msecs vs usecs to + // blindly call reset. + if err := conn.ResetFailedUnitContext(ctx, serviceFile); err != nil { + logrus.Debugf("failed to reset unit file: %q", err) + } + // We want to ignore errors where the timer unit and/or service unit has already // been removed. The error return is generic so we have to check against the // string in the error |