Skip to content
This repository has been archived by the owner on Feb 29, 2024. It is now read-only.

Commit

Permalink
Wrap stopping podman -t with systemd timeouts (squash)
Browse files Browse the repository at this point in the history
1) Currently with KillMode=none, if podman -t hangs, the command repeats
leaving the process and its cgroup around.
But if a stop/start command hangs, we should not start another one.

Instead time it out properly via TimeoutStopSec set to the 2x of
the timeout given to the managed podman action. Then if it expires,
kill its cgroup all the way (KillMode=control-group is a default)
before rerunning the same operation. Also note that using KilMode
process is not recommended by systemd man pages.

Increase the grace stop timeout defaults 10->42s to align it with:
containers/podman#8889

2) Make KillMode configurable for service units

Libvirt container is a special beast that needs custom
killmode value for its tripleo-manager service unit.
Add kill_mode for the container values that defaults to
control-group.

3) Fix TimeoutStopSec to integer convertion

Related: rhbz#2010135
Closes-bug: #1945791
Change-Id: Iefe861f91cefe2a9cf773cae98b2440566ae8b5e
Signed-off-by: Bogdan Dobrelya <[email protected]>
(cherry picked from commit badd5a3)
  • Loading branch information
bogdando committed May 5, 2022
1 parent 85e112b commit 8417892
Showing 1 changed file with 4 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ ExecStart=/usr/libexec/tripleo-start-podman-container {{ lookup('dict', containe
ExecStart=/usr/bin/podman start {{ lookup('dict', container_data).key }}
{% endif %}
ExecReload=/usr/bin/podman kill --signal HUP {{ lookup('dict', container_data).key }}
ExecStop=/usr/bin/podman stop -t {{ lookup('dict', container_data).value.stop_grace_period | default(10) | int }} {{ lookup('dict', container_data).key }}
ExecStopPost=/usr/bin/podman stop -t {{ lookup('dict', container_data).value.stop_grace_period | default(10) | int }} {{ lookup('dict', container_data).key }}
ExecStop=/usr/bin/podman stop -t {{ lookup('dict', container_data).value.stop_grace_period | default(42) | int }} {{ lookup('dict', container_data).key }}
ExecStopPost=/usr/bin/podman stop -t {{ lookup('dict', container_data).value.stop_grace_period | default(42) | int }} {{ lookup('dict', container_data).key }}
SuccessExitStatus=137 142 143
KillMode=none
TimeoutStopSec={{ 2*(lookup('dict', container_data).value.stop_grace_period | default(42) | int) }}
KillMode={{ lookup('dict', container_data).value.kill_mode | default('control-group') }}
Type=forking
PIDFile=/var/run/{{ lookup('dict', container_data).key }}.pid
{% if lookup('dict', container_data).value.systemd_exec_flags is defined %}
Expand Down

0 comments on commit 8417892

Please sign in to comment.