Browse Source

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: Idb8be98f83f95ae536762f79809aa375f04e56ab
Closes-Bug: #1884866
(cherry picked from commit 77b4f66504)
changes/33/738233/1
Takashi Kajinami 2 weeks ago
committed by Emilien Macchi
parent
commit
522f1479a1
1 changed files with 1 additions and 0 deletions
  1. +1
    -0
      tripleo_ansible/roles/tripleo_container_manage/templates/systemd-service.j2

+ 1
- 0
tripleo_ansible/roles/tripleo_container_manage/templates/systemd-service.j2 View File

@@ -11,6 +11,7 @@ ExecStart=/usr/bin/podman start {{ lookup('dict', container_data_unit).key }}
{% endif %}
ExecReload=/usr/bin/podman kill --signal HUP {{ lookup('dict', container_data_unit).key }}
ExecStop=/usr/bin/podman stop -t {{ lookup('dict', container_data_unit).value.stop_grace_period | default(10) | int }} {{ lookup('dict', container_data_unit).key }}
ExecStopPost=/usr/bin/podman stop -t {{ lookup('dict', container_data_unit).value.stop_grace_period | default(10) | int }} {{ lookup('dict', container_data_unit).key }}
KillMode=none
Type=forking
PIDFile=/var/run/{{ lookup('dict', container_data_unit).key }}.pid


Loading…
Cancel
Save