Skip to content

Commit 805217d

Browse files
pablomhevgeni
authored andcommitted
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 398ee1b commit 805217d

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
@@ -97,7 +97,7 @@
9797
[Unit]
9898
PartOf=foreman.target
9999
Wants=redis.service postgresql.service
100-
After=redis.service postgresql.service
100+
After=foreman.target redis.service postgresql.service
101101
[Service]
102102
TimeoutStartSec=300
103103
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
@@ -127,7 +127,7 @@
127127
[Unit]
128128
PartOf=foreman.target
129129
Wants=redis.service postgresql.service
130-
After=redis.service postgresql.service
130+
After=foreman.target redis.service postgresql.service
131131
notify: Restart foreman
132132

133133
- name: Deploy Dynflow Container
@@ -162,7 +162,7 @@
162162
[Unit]
163163
PartOf=foreman.target
164164
Wants=redis.service postgresql.service
165-
After=redis.service postgresql.service
165+
After=foreman.target redis.service postgresql.service
166166
- |
167167
[Service]
168168
Restart=on-failure
@@ -207,6 +207,7 @@
207207
- |
208208
[Unit]
209209
PartOf=foreman.target
210+
After=foreman.target
210211
StartLimitIntervalSec=0
211212
- |
212213
[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: Configure SSL certificates
4849
when:

src/roles/pulp/tasks/main.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
[Unit]
120120
PartOf=foreman.target
121121
Wants=redis.service postgresql.service
122-
After=redis.service postgresql.service
122+
After=foreman.target redis.service postgresql.service
123123
[Service]
124124
Restart=always
125125
RestartSec=3
@@ -150,7 +150,7 @@
150150
[Unit]
151151
PartOf=foreman.target
152152
Wants=redis.service postgresql.service
153-
After=redis.service postgresql.service
153+
After=foreman.target redis.service postgresql.service
154154
[Service]
155155
Restart=always
156156
RestartSec=3
@@ -181,7 +181,7 @@
181181
[Unit]
182182
PartOf=pulp-worker.target foreman.target
183183
Wants=redis.service postgresql.service
184-
After=redis.service postgresql.service
184+
After=foreman.target redis.service postgresql.service
185185
[Service]
186186
Restart=always
187187
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)