Make sure failed containers get stopped by systemd
When the main PID (i.e., common) of a container is killed because of some reasons, systemd won't execute ExecStop command. Current podman doesn't detect this failure ang recognize that container is still running and this causes failure when systemd tries to restart the container. This patch introduces ExecStopPost configuration into systemd unit files so that stop operation is executed even when a container fails because of killed main process. The stale container should be cleaned up by ExecStopPost task before systemd tries to restart it. Note that the similar change has been introcuded to "podman generate systemd" command already[1]. [1]e5c3432944
Change-Id: Ie2cb3bb63138b70019f86b88066697e98e333669 Closes-Bug: #1884866 (cherry picked from commitb8f412d81c
)
This commit is contained in:
parent
c8661e0505
commit
6f44509dcb
|
@ -41,6 +41,7 @@ class TestUtilsSystemd(base.TestCase):
|
|||
self.assertIn('Wants=something.service', unit)
|
||||
self.assertIn('Restart=always', unit)
|
||||
self.assertIn('ExecStop=/usr/bin/podman stop -t 15 my_app', unit)
|
||||
self.assertIn('ExecStopPost=/usr/bin/podman stop -t 15 my_app', unit)
|
||||
self.assertIn('PIDFile=/var/run/my_app.pid', unit)
|
||||
mock_chmod.assert_has_calls([mock.call(sysd_unit_f, 420)])
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ Restart=%(restart)s
|
|||
ExecStart=%(start_cmd)s
|
||||
ExecReload=/usr/bin/podman kill --signal HUP %(name)s
|
||||
ExecStop=/usr/bin/podman stop -t %(stop_grace_period)s %(name)s
|
||||
ExecStopPost=/usr/bin/podman stop -t %(stop_grace_period)s %(name)s
|
||||
KillMode=none
|
||||
Type=forking
|
||||
PIDFile=/var/run/%(name)s.pid
|
||||
|
|
Loading…
Reference in New Issue