Do not delete and re-create Synapse worker configs needlessly

We had checks to avoid stopping/deleting systemd services for workers
that used to exist and will continue to exist, but we were deleting
config files for workers each time.. Only to recreate them again later.

This lead to:

- too many misleading "changed" tasks
- too much unnecessary work
- potential failures during playbook execution possibly leaving the
  system in a bad state (no worker config files)
This commit is contained in:
Slavi Pantaleev 2022-11-24 17:06:31 +02:00
parent 2e7b5c7b02
commit c37cf42427

View File

@ -7,12 +7,16 @@
use_regex: true use_regex: true
register: matrix_synapse_workers_current_config_files register: matrix_synapse_workers_current_config_files
- set_fact:
matrix_synapse_enabled_worker_names: "{{ matrix_synapse_workers_enabled_list | map(attribute='name') }}"
# This also deletes some things which we need. They will be recreated below. # This also deletes some things which we need. They will be recreated below.
- name: Ensure previous worker configs are cleaned - name: Ensure unnecessary worker configs are cleaned
ansible.builtin.file: ansible.builtin.file:
path: "{{ item.path }}" path: "{{ item.path }}"
state: absent state: absent
with_items: "{{ matrix_synapse_workers_current_config_files.files }}" with_items: "{{ matrix_synapse_workers_current_config_files.files }}"
when: "not ansible_check_mode and (item.path | basename | replace ('worker.', '') | replace('.yaml', '')) not in matrix_synapse_enabled_worker_names"
- name: Determine current worker systemd services - name: Determine current worker systemd services
ansible.builtin.find: ansible.builtin.find:
@ -27,13 +31,14 @@
state: stopped state: stopped
enabled: false enabled: false
with_items: "{{ matrix_synapse_workers_current_systemd_services.files }}" with_items: "{{ matrix_synapse_workers_current_systemd_services.files }}"
when: "not ansible_check_mode and item.path | basename not in devture_systemd_service_manager_services_list | map(attribute='name')" when: "not ansible_check_mode and (item.path | basename | replace('.service', '')) not in matrix_synapse_enabled_worker_names"
- name: Ensure unnecessary worker systemd services are cleaned - name: Ensure unnecessary worker systemd services are cleaned
ansible.builtin.file: ansible.builtin.file:
path: "{{ item.path }}" path: "{{ item.path }}"
state: absent state: absent
with_items: "{{ matrix_synapse_workers_current_systemd_services.files }}" with_items: "{{ matrix_synapse_workers_current_systemd_services.files }}"
when: "not ansible_check_mode and (item.path | basename | replace('.service', '')) not in matrix_synapse_enabled_worker_names"
- name: Ensure creation of worker systemd service files and configuration files - name: Ensure creation of worker systemd service files and configuration files
ansible.builtin.include_tasks: "{{ role_path }}/tasks/synapse/workers/util/setup_files_for_worker.yml" ansible.builtin.include_tasks: "{{ role_path }}/tasks/synapse/workers/util/setup_files_for_worker.yml"