Stop using deprecated (in Synapse v1.59) user_dir and appservice workers

Source: https://github.com/matrix-org/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types

As an alternative, we should probably find a way to run one or a few
more generic workers (which will handle appservice and user_dir stuff) and
update `homeserver.yaml` so that it would point to the name of these workers using
`notify_appservices_from_worker` and `update_user_directory_from_worker` options.

For now, this solves the deprecation, so we can have a peace of mind
going forward.

We're force-setting these worker counts to 0, so that we can clean up
existing homeservers which use these worker types. In the future, these
options will either be removed or repurposed (so that they transparently
create more generic workers that handle user_dir/appservice loads).
This commit is contained in:
Slavi Pantaleev 2022-05-31 16:28:33 +03:00 committed by teutat3s
parent c0587b6490
commit a2c3ee417b
Signed by: teutat3s
GPG key ID: 18DAE600A6BBE705
4 changed files with 63 additions and 11 deletions

View file

@ -358,10 +358,13 @@ matrix_synapse_workers_presets:
one-of-each: one-of-each:
generic_workers_count: 1 generic_workers_count: 1
pusher_workers_count: 1 pusher_workers_count: 1
appservice_workers_count: 1 # appservice workers are deprecated since Synapse v1.59. This will be removed.
appservice_workers_count: 0
federation_sender_workers_count: 1 federation_sender_workers_count: 1
media_repository_workers_count: 1 media_repository_workers_count: 1
# Disabled until https://github.com/matrix-org/synapse/issues/8787 is resolved. # Disabled until https://github.com/matrix-org/synapse/issues/8787 is resolved.
# user_dir workers are deprecated since Synapse v1.59. This will be removed.
# See: https://github.com/matrix-org/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types
user_dir_workers_count: 0 user_dir_workers_count: 0
frontend_proxy_workers_count: 1 frontend_proxy_workers_count: 1
@ -383,7 +386,9 @@ matrix_synapse_workers_pusher_workers_count: "{{ matrix_synapse_workers_presets[
matrix_synapse_workers_pusher_workers_metrics_range_start: 19200 matrix_synapse_workers_pusher_workers_metrics_range_start: 19200
# matrix_synapse_workers_appservice_workers_count can only be 0 or 1. More instances are not supported. # matrix_synapse_workers_appservice_workers_count can only be 0 or 1. More instances are not supported.
matrix_synapse_workers_appservice_workers_count: "{{ matrix_synapse_workers_presets[matrix_synapse_workers_preset]['appservice_workers_count'] }}" # appservice workers are deprecated since Synapse v1.59. This will be removed.
# See: https://github.com/matrix-org/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types
matrix_synapse_workers_appservice_workers_count: 0
matrix_synapse_workers_appservice_workers_metrics_range_start: 19300 matrix_synapse_workers_appservice_workers_metrics_range_start: 19300
# matrix_synapse_workers_federation_sender_workers_count can only be 0 or 1 for now. # matrix_synapse_workers_federation_sender_workers_count can only be 0 or 1 for now.
@ -397,7 +402,9 @@ matrix_synapse_workers_media_repository_workers_port_range_start: 18551
matrix_synapse_workers_media_repository_workers_metrics_range_start: 19551 matrix_synapse_workers_media_repository_workers_metrics_range_start: 19551
# Disabled until https://github.com/matrix-org/synapse/issues/8787 is resolved. # Disabled until https://github.com/matrix-org/synapse/issues/8787 is resolved.
matrix_synapse_workers_user_dir_workers_count: "{{ matrix_synapse_workers_presets[matrix_synapse_workers_preset]['user_dir_workers_count'] }}" # user_dir workers are deprecated since Synapse v1.59. This will be removed.
# See: https://github.com/matrix-org/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types
matrix_synapse_workers_user_dir_workers_count: 0
matrix_synapse_workers_user_dir_workers_port_range_start: 18661 matrix_synapse_workers_user_dir_workers_port_range_start: 18661
matrix_synapse_workers_user_dir_workers_metrics_range_start: 19661 matrix_synapse_workers_user_dir_workers_metrics_range_start: 19661

View file

@ -12,13 +12,24 @@
- "matrix_synapse_database_password" - "matrix_synapse_database_password"
- "matrix_synapse_database_database" - "matrix_synapse_database_database"
- name: Fail if asking to configure deprecaed workers (appservice, userdir)
fail:
msg: >-
`{{ item }}` cannot be more than 0.
This type of worker has been deprecated since Synapse v1.59.
Please remove your `{{ item }}` configuration to solve this problem.
See: https://github.com/matrix-org/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types
when: "vars[item]|int != 0"
with_items:
- "matrix_synapse_workers_appservice_workers_count"
- "matrix_synapse_workers_user_dir_workers_count"
- name: Fail if asking for more than 1 instance of single-instance workers - name: Fail if asking for more than 1 instance of single-instance workers
fail: fail:
msg: >- msg: >-
`{{ item }}` cannot be more than 1. This is a single-instance worker. `{{ item }}` cannot be more than 1. This is a single-instance worker.
when: "vars[item]|int > 1" when: "vars[item]|int > 1"
with_items: with_items:
- "matrix_synapse_workers_appservice_workers_count"
- "matrix_synapse_workers_pusher_workers_count" - "matrix_synapse_workers_pusher_workers_count"
- "matrix_synapse_workers_federation_sender_workers_count" - "matrix_synapse_workers_federation_sender_workers_count"

View file

@ -352,9 +352,6 @@ worker_app: synapse.app.homeserver
# thx https://oznetnerd.com/2017/04/18/jinja2-selectattr-filter/ # thx https://oznetnerd.com/2017/04/18/jinja2-selectattr-filter/
# reduce the main worker's offerings to core homeserver business # reduce the main worker's offerings to core homeserver business
{% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'appservice')|list %}
notify_appservices: false
{% endif %}
{% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'federation_sender')|list %} {% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'federation_sender')|list %}
send_federation: false send_federation: false
{% endif %} {% endif %}
@ -364,9 +361,6 @@ enable_media_repo: false
{% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'pusher')|list %} {% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'pusher')|list %}
start_pushers: false start_pushers: false
{% endif %} {% endif %}
{% if matrix_synapse_workers_enabled_list|selectattr('type', 'equalto', 'user_dir')|list %}
update_user_directory: false
{% endif %}
daemonize: false daemonize: false
{% endif %} {% endif %}

View file

@ -279,7 +279,7 @@ matrix_synapse_workers_generic_worker_endpoints:
# run_background_tasks_on: background_worker # run_background_tasks_on: background_worker
# ``` # ```
# You might also wish to investigate the `update_user_directory` and # You might also wish to investigate the `update_user_directory_from_worker` and
# `media_instance_running_background_jobs` settings. # `media_instance_running_background_jobs` settings.
# An example for a dedicated background worker instance: # An example for a dedicated background worker instance:
@ -288,6 +288,40 @@ matrix_synapse_workers_generic_worker_endpoints:
# {{#include systemd-with-workers/workers/background_worker.yaml}} # {{#include systemd-with-workers/workers/background_worker.yaml}}
# ``` # ```
# #### Updating the User Directory
# You can designate one generic worker to update the user directory.
# Specify its name in the shared configuration as follows:
# ```yaml
# update_user_directory_from_worker: worker_name
# ```
# This work cannot be load-balanced; please ensure the main process is restarted
# after setting this option in the shared configuration!
# This style of configuration supersedes the legacy `synapse.app.user_dir`
# worker application type.
# #### Notifying Application Services
# You can designate one generic worker to send output traffic to Application Services.
# Specify its name in the shared configuration as follows:
# ```yaml
# notify_appservices_from_worker: worker_name
# ```
# This work cannot be load-balanced; please ensure the main process is restarted
# after setting this option in the shared configuration!
# This style of configuration supersedes the legacy `synapse.app.appservice`
# worker application type.
# pusher worker (no API endpoints) [ # pusher worker (no API endpoints) [
# Handles sending push notifications to sygnal and email. Doesn't handle any # Handles sending push notifications to sygnal and email. Doesn't handle any
# REST endpoints itself, but you should set `start_pushers: False` in the # REST endpoints itself, but you should set `start_pushers: False` in the
@ -305,6 +339,9 @@ matrix_synapse_workers_generic_worker_endpoints:
# ] # ]
# appservice worker (no API endpoints) [ # appservice worker (no API endpoints) [
# **Deprecated as of Synapse v1.59.** [Use `synapse.app.generic_worker` with the
# `notify_appservices_from_worker` option instead.](#notifying-application-services)
# Handles sending output traffic to Application Services. Doesn't handle any # Handles sending output traffic to Application Services. Doesn't handle any
# REST endpoints itself, but you should set `notify_appservices: False` in the # REST endpoints itself, but you should set `notify_appservices: False` in the
# shared configuration file to stop the main synapse sending appservice notifications. # shared configuration file to stop the main synapse sending appservice notifications.
@ -371,6 +408,9 @@ matrix_synapse_workers_media_repository_endpoints:
# Note that if a reverse proxy is used , then `/_matrix/media/` must be routed for both inbound client and federation requests (if they are handled separately). # Note that if a reverse proxy is used , then `/_matrix/media/` must be routed for both inbound client and federation requests (if they are handled separately).
matrix_synapse_workers_user_dir_endpoints: matrix_synapse_workers_user_dir_endpoints:
# **Deprecated as of Synapse v1.59.** [Use `synapse.app.generic_worker` with the
# `update_user_directory_from_worker` option instead.](#updating-the-user-directory)
# Handles searches in the user directory. It can handle REST endpoints matching # Handles searches in the user directory. It can handle REST endpoints matching
# the following regular expressions: # the following regular expressions: