Skip to content

Commit a59dd8b

Browse files
committed
Skip service reload when restart already triggered
Upon changes, some tasks will trigger the reload handler while others will trigger the restart handler. During initial installation of Slurm with the role, this can lead to some race condition where reload and restart will execute too closely one from the other, which can trigger a failure of the second service. When a restart handler is notified, there should be no need to trigger the reload as well. Move the restart handlers before the reload handlers to make sure those are executed first. Register their result in a variable. Test if the variable is defined in the reload handler (which means that the restart handler was executed). Also remove one of the 'Reload slurmdbd' handler which was defined twice.
1 parent b1f1354 commit a59dd8b

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

handlers/main.yml

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
name: munge
55
state: restarted
66

7-
- name: Reload slurmdbd
8-
ansible.builtin.service:
9-
name: "{{ slurmdbd_service_name }}"
10-
state: reloaded
11-
when: "(slurm_start_services | bool) and ('slurmdbdservers' in group_names or 'dbd' in slurm_roles)"
12-
137
- name: Restart slurmdbd
148
ansible.builtin.systemd:
159
name: "{{ slurmdbd_service_name }}"
@@ -18,18 +12,16 @@
1812
enabled: yes
1913
daemon_reload: yes
2014
when: "(slurm_start_services | bool) and ('slurmservers' in group_names or 'controller' in slurm_roles)"
15+
register: slurmdbd_restart
2116

22-
- name: Restart slurmdbd
17+
- name: Reload slurmdbd
2318
ansible.builtin.service:
2419
name: "{{ slurmdbd_service_name }}"
25-
state: restarted
26-
when: "slurm_start_services and ('slurmdbdservers' in group_names or 'dbd' in slurm_roles)"
27-
28-
- name: Reload slurmctld
29-
ansible.builtin.service:
30-
name: "{{ slurmctld_service_name }}"
3120
state: reloaded
32-
when: "(slurm_start_services | bool) and ('slurmservers' in group_names or 'controller' in slurm_roles)"
21+
when:
22+
- slurm_start_services | bool
23+
- ('slurmdbdservers' in group_names or 'dbd' in slurm_roles)
24+
- slurmdbd_restart is not defined
3325

3426
- name: Restart slurmctld
3527
ansible.builtin.systemd:
@@ -39,15 +31,29 @@
3931
enabled: yes
4032
daemon_reload: yes
4133
when: "(slurm_start_services | bool) and ('slurmservers' in group_names or 'controller' in slurm_roles)"
34+
register: slurmctld_restart
4235

43-
- name: Reload slurmd
36+
- name: Reload slurmctld
4437
ansible.builtin.service:
45-
name: "{{ slurmd_service_name }}"
38+
name: "{{ slurmctld_service_name }}"
4639
state: reloaded
47-
when: "(slurm_start_services | bool) and ('slurmexechosts' in group_names or 'exec' in slurm_roles)"
40+
when:
41+
- slurm_start_services | bool
42+
- ('slurmservers' in group_names or 'controller' in slurm_roles)
43+
- slurmctld_restart is not defined
4844

4945
- name: Restart slurmd
5046
ansible.builtin.service:
5147
name: "{{ slurmd_service_name }}"
5248
state: restarted
5349
when: "(slurm_start_services | bool) and ('slurmexechosts' in group_names or 'exec' in slurm_roles)"
50+
register: slurmd_restart
51+
52+
- name: Reload slurmd
53+
ansible.builtin.service:
54+
name: "{{ slurmd_service_name }}"
55+
state: reloaded
56+
when:
57+
- slurm_start_services | bool
58+
- ('slurmexechosts' in group_names or 'exec' in slurm_roles)
59+
- slurmd_restart is not defined

0 commit comments

Comments
 (0)