Add support for running background tasks on a worker
This commit is contained in:
@ -398,6 +398,7 @@ matrix_synapse_workers_presets:
|
||||
media_repository_workers_count: 0
|
||||
appservice_workers_count: 0
|
||||
user_dir_workers_count: 0
|
||||
background_workers_count: 0
|
||||
stream_writer_events_stream_workers_count: 0
|
||||
stream_writer_typing_stream_workers_count: 0
|
||||
stream_writer_to_device_stream_workers_count: 0
|
||||
@ -411,6 +412,7 @@ matrix_synapse_workers_presets:
|
||||
media_repository_workers_count: 1
|
||||
appservice_workers_count: 1
|
||||
user_dir_workers_count: 1
|
||||
background_workers_count: 1
|
||||
stream_writer_events_stream_workers_count: 1
|
||||
stream_writer_typing_stream_workers_count: 1
|
||||
stream_writer_to_device_stream_workers_count: 1
|
||||
@ -554,6 +556,15 @@ matrix_synapse_workers_user_dir_workers_metrics_range_start: 19661
|
||||
# `update_user_directory_from_worker` is meant to point to a worker, which is dedicated to updating the user directory and servicing some user directory URL endpoints (`matrix_synapse_workers_user_dir_worker_client_server_endpoints`).
|
||||
matrix_synapse_update_user_directory_from_worker: "{{ (matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'user_dir') | list)[0].name if (matrix_synapse_workers_enabled and matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'user_dir') | list | length > 0) else '' }}"
|
||||
|
||||
# matrix_synapse_workers_background_workers_count can only be 0 or 1. More instances are not supported.
|
||||
# Our implementation uses a generic worker and assigns Synapse to perform background work on this worker using the `run_background_tasks_on` Synapse option.
|
||||
matrix_synapse_workers_background_workers_count: "{{ matrix_synapse_workers_presets[matrix_synapse_workers_preset]['background_workers_count'] }}"
|
||||
matrix_synapse_workers_background_workers_metrics_range_start: 19700
|
||||
|
||||
# matrix_synapse_run_background_tasks_on populates the `run_background_tasks_on` Synapse configuration used when Synapse workers are in use (`matrix_synapse_workers_enabled`).
|
||||
# `run_background_tasks_on` is meant to point to a worker, which is dedicated to processing background tasks.
|
||||
matrix_synapse_run_background_tasks_on: "{{ (matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'background') | list)[0].name if (matrix_synapse_workers_enabled and matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'background') | list | length > 0) else '' }}"
|
||||
|
||||
# Default list of workers to spawn.
|
||||
#
|
||||
# Unless you populate this manually, this list is dynamically generated
|
||||
|
@ -100,6 +100,20 @@
|
||||
register: "matrix_synapse_workers_list_results_user_dir_workers"
|
||||
loop: "{{ range(0, matrix_synapse_workers_user_dir_workers_count | int) | list }}"
|
||||
|
||||
# This type of worker can only have a count of 1, at most
|
||||
- name: Build background workers
|
||||
ansible.builtin.set_fact:
|
||||
worker:
|
||||
id: "background-{{ item }}"
|
||||
name: "matrix-synapse-worker-background-{{ item }}"
|
||||
type: 'background'
|
||||
app: 'generic_worker'
|
||||
webserving: false
|
||||
port: 0
|
||||
metrics_port: "{{ matrix_synapse_workers_background_workers_metrics_range_start + item }}"
|
||||
register: "matrix_synapse_workers_list_results_background_workers"
|
||||
loop: "{{ range(0, matrix_synapse_workers_background_workers_count | int) | list }}"
|
||||
|
||||
- name: Build media_repository workers
|
||||
ansible.builtin.set_fact:
|
||||
worker:
|
||||
@ -130,6 +144,8 @@
|
||||
matrix_synapse_workers_list_results_user_dir_workers.results
|
||||
+
|
||||
matrix_synapse_workers_list_results_media_repository_workers.results
|
||||
+
|
||||
matrix_synapse_workers_list_results_background_workers.results
|
||||
}}
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
|
@ -20,6 +20,7 @@
|
||||
with_items:
|
||||
- "matrix_synapse_workers_appservice_workers_count"
|
||||
- "matrix_synapse_workers_user_dir_workers_count"
|
||||
- "matrix_synapse_workers_background_workers_count"
|
||||
- "matrix_synapse_workers_stream_writer_typing_stream_workers_count"
|
||||
- "matrix_synapse_workers_stream_writer_to_device_stream_workers_count"
|
||||
- "matrix_synapse_workers_stream_writer_account_data_stream_workers_count"
|
||||
|
@ -2886,6 +2886,9 @@ update_user_directory_from_worker: {{ matrix_synapse_update_user_directory_from_
|
||||
# data). If not provided this defaults to the main process.
|
||||
#
|
||||
#run_background_tasks_on: worker1
|
||||
{% if matrix_synapse_run_background_tasks_on != '' %}
|
||||
run_background_tasks_on: {{ matrix_synapse_run_background_tasks_on | to_json }}
|
||||
{% endif %}
|
||||
|
||||
# A shared secret used by the replication APIs to authenticate HTTP requests
|
||||
# from workers.
|
||||
|
@ -102,6 +102,8 @@ matrix_synapse_known_worker_types: |
|
||||
['appservice']
|
||||
+
|
||||
['user_dir']
|
||||
+
|
||||
['background']
|
||||
) | unique
|
||||
}}
|
||||
|
||||
|
Reference in New Issue
Block a user