From 0ea5080c9156853b7806879226e23ab0405815d6 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 13 Sep 2022 09:38:42 +0200 Subject: generate systemd: warn on --restart without --new Emit a warning to the user when generating a unit with --new on a container that was created with a custom --restart policy. As shown in #15284, a custom --restart policy in that case can lead to issues on system shutdown where systemd attempts to nuke the unit but Podman keeps on restarting the container. Fixes: #15284 Signed-off-by: Valentin Rothberg --- pkg/systemd/generate/containers.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'pkg') diff --git a/pkg/systemd/generate/containers.go b/pkg/systemd/generate/containers.go index 0274dd7b7..8510cfd42 100644 --- a/pkg/systemd/generate/containers.go +++ b/pkg/systemd/generate/containers.go @@ -148,6 +148,18 @@ func generateContainerInfo(ctr *libpod.Container, options entities.GenerateSyste return nil, errors.New("conmon PID file path is empty, try to recreate the container with --conmon-pidfile flag") } + // #15284: old units generated without --new can lead to issues on + // shutdown when the containers are created with a custom restart + // policy. + if !options.New { + switch config.RestartPolicy { + case libpodDefine.RestartPolicyNo, libpodDefine.RestartPolicyNone: + // All good + default: + logrus.Warnf("Container %s has restart policy %q which can lead to issues on shutdown: consider recreating the container without a restart policy and use systemd's restart mechanism instead", ctr.ID(), config.RestartPolicy) + } + } + createCommand := []string{} if config.CreateCommand != nil { createCommand = config.CreateCommand -- cgit v1.2.3-54-g00ecf