Skip to content

Commit a0cba44

Browse files
committed
Ensure all foreman.target services stop before the target
Add After=foreman.target to every service and timer that is PartOf=foreman.target. The reversed stop ordering (each service stops before foreman.target) means systemctl stop foreman.target now blocks until all constituent services have fully stopped, rather than returning the moment the target meta-unit transitions to inactive. Without this, a rapid stop+start of foreman.target can call systemctl start while services are still in the process of stopping, leading to container conflicts and races on the subsequent start.
1 parent facd8e4 commit a0cba44

File tree

7 files changed

+11
-6
lines changed

7 files changed

+11
-6
lines changed

src/roles/candlepin/tasks/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
[Unit]
8989
PartOf=foreman.target
9090
Wants=redis.service postgresql.service
91-
After=redis.service postgresql.service
91+
After=foreman.target redis.service postgresql.service
9292
[Service]
9393
TimeoutStartSec=300
9494
healthcheck: curl --fail --insecure https://localhost:23443/candlepin/status

src/roles/foreman/tasks/main.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
[Unit]
118118
PartOf=foreman.target
119119
Wants=redis.service postgresql.service
120-
After=redis.service postgresql.service
120+
After=foreman.target redis.service postgresql.service
121121
notify: Restart foreman
122122

123123
- name: Deploy Dynflow Container
@@ -151,7 +151,7 @@
151151
[Unit]
152152
PartOf=foreman.target
153153
Wants=redis.service postgresql.service
154-
After=redis.service postgresql.service
154+
After=foreman.target redis.service postgresql.service
155155
- |
156156
[Service]
157157
Restart=on-failure
@@ -196,6 +196,7 @@
196196
- |
197197
[Unit]
198198
PartOf=foreman.target
199+
After=foreman.target
199200
StartLimitIntervalSec=0
200201
- |
201202
[Service]

src/roles/foreman/templates/foreman-recurring@.timer.j2

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[Unit]
22
Description=Timer for Foreman recurring: {{ item.rake }}
33
PartOf=foreman.target
4+
After=foreman.target
45

56
[Timer]
67
Unit=foreman-recurring@{{ item.instance }}.service

src/roles/foreman_proxy/tasks/main.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
WantedBy=default.target foreman.target
3636
[Unit]
3737
PartOf=foreman.target
38+
After=foreman.target
3839
notify: Restart Foreman Proxy
3940

4041
- name: Run daemon reload to make Quadlet create the service files

src/roles/postgresql/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
WantedBy=default.target foreman.target
4444
[Unit]
4545
PartOf=foreman.target
46+
After=foreman.target
4647
4748
- name: Run daemon reload
4849
ansible.builtin.systemd:

src/roles/pulp/tasks/main.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
[Unit]
109109
PartOf=foreman.target
110110
Wants=redis.service postgresql.service
111-
After=redis.service postgresql.service
111+
After=foreman.target redis.service postgresql.service
112112
[Service]
113113
Restart=always
114114
RestartSec=3
@@ -138,7 +138,7 @@
138138
[Unit]
139139
PartOf=foreman.target
140140
Wants=redis.service postgresql.service
141-
After=redis.service postgresql.service
141+
After=foreman.target redis.service postgresql.service
142142
[Service]
143143
Restart=always
144144
RestartSec=3
@@ -168,7 +168,7 @@
168168
[Unit]
169169
PartOf=pulp-worker.target foreman.target
170170
Wants=redis.service postgresql.service
171-
After=redis.service postgresql.service
171+
After=foreman.target redis.service postgresql.service
172172
[Service]
173173
Restart=always
174174
RestartSec=3

src/roles/redis/tasks/main.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
WantedBy=default.target foreman.target
3232
[Unit]
3333
PartOf=foreman.target
34+
After=foreman.target
3435
3536
- name: Run daemon reload
3637
ansible.builtin.systemd:

0 commit comments

Comments
 (0)