Update worker docs to update preferred settings for pusher and federation_sender (#14493)

* Fix one typo on line 3700(and apparently do something to other lines, no idea)

* Update config_documentation.md with more information about how federation_senders and pushers settings can be handled.

Specifically, that the instance map style of config does not require the special other variables that enable and disable functionality and that a single worker CAN be added to the map not only just two or more.

* Extra line here for consistency and appearance.

* Add link to sygnal repo.

* Add deprecation notice to workers.md and point to the newer alternative method of defining this functionality.

* Changelog

* Correct version number of Synapse the deprecation is happening in.

* Update quiet deprecation with simple notice and suggestion.
This commit is contained in:
realtyem 2022-12-02 05:38:01 -06:00 committed by GitHub
parent 656dce4baf
commit 6acb6d772a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 31 deletions

1
changelog.d/14493.doc Normal file
View File

@ -0,0 +1 @@
Update worker settings for `pusher` and `federation_sender` functionality.

View File

@ -3684,7 +3684,7 @@ As a result, the worker configuration is divided into two parts.
1. The first part (in this section of the manual) defines which shardable tasks 1. The first part (in this section of the manual) defines which shardable tasks
are delegated to privileged workers. This allows unprivileged workers to make are delegated to privileged workers. This allows unprivileged workers to make
request a privileged worker to act on their behalf. requests to a privileged worker to act on their behalf.
1. [The second part](#individual-worker-configuration) 1. [The second part](#individual-worker-configuration)
controls the behaviour of individual workers in isolation. controls the behaviour of individual workers in isolation.
@ -3706,6 +3706,8 @@ worker_replication_secret: "secret_secret"
--- ---
### `start_pushers` ### `start_pushers`
Unnecessary to set if using [`pusher_instances`](#pusher_instances) with [`generic_workers`](../../workers.md#synapseappgeneric_worker).
Controls sending of push notifications on the main process. Set to `false` Controls sending of push notifications on the main process. Set to `false`
if using a [pusher worker](../../workers.md#synapseapppusher). Defaults to `true`. if using a [pusher worker](../../workers.md#synapseapppusher). Defaults to `true`.
@ -3716,25 +3718,30 @@ start_pushers: false
--- ---
### `pusher_instances` ### `pusher_instances`
It is possible to run multiple [pusher workers](../../workers.md#synapseapppusher), It is possible to scale the processes that handle sending push notifications to [sygnal](https://github.com/matrix-org/sygnal)
in which case the work is balanced across them. Use this setting to list the pushers by and email by running a [`generic_worker`](../../workers.md#synapseappgeneric_worker) and adding it's [`worker_name`](#worker_name) to
[`worker_name`](#worker_name). Ensure the main process and all pusher workers are a `pusher_instances` map. Doing so will remove handling of this function from the main
restarted after changing this option. process. Multiple workers can be added to this map, in which case the work is balanced
across them. Ensure the main process and all pusher workers are restarted after changing
this option.
If no or only one pusher worker is configured, this setting is not necessary. Example configuration for a single worker:
The main process will send out push notifications by default if you do not disable ```yaml
it by setting [`start_pushers: false`](#start_pushers). pusher_instances:
- pusher_worker1
Example configuration: ```
And for multiple workers:
```yaml ```yaml
start_pushers: false
pusher_instances: pusher_instances:
- pusher_worker1 - pusher_worker1
- pusher_worker2 - pusher_worker2
``` ```
--- ---
### `send_federation` ### `send_federation`
Unnecessary to set if using [`federation_sender_instances`](#federation_sender_instances) with [`generic_workers`](../../workers.md#synapseappgeneric_worker).
Controls sending of outbound federation transactions on the main process. Controls sending of outbound federation transactions on the main process.
Set to `false` if using a [federation sender worker](../../workers.md#synapseappfederation_sender). Set to `false` if using a [federation sender worker](../../workers.md#synapseappfederation_sender).
Defaults to `true`. Defaults to `true`.
@ -3746,21 +3753,28 @@ send_federation: false
--- ---
### `federation_sender_instances` ### `federation_sender_instances`
It is possible to run multiple It is possible to scale the processes that handle sending outbound federation requests
[federation sender worker](../../workers.md#synapseappfederation_sender), in which by running a [`generic_worker`](../../workers.md#synapseappgeneric_worker) and adding it's [`worker_name`](#worker_name) to
case the work is balanced across them. Use this setting to list the senders. a `federation_sender_instances` map. Doing so will remove handling of this function from
the main process. Multiple workers can be added to this map, in which case the work is
balanced across them.
This configuration setting must be shared between all federation sender workers, and if This configuration setting must be shared between all workers handling federation
changed all federation sender workers must be stopped at the same time and then sending, and if changed all federation sender workers must be stopped at the same time
started, to ensure that all instances are running with the same config (otherwise and then started, to ensure that all instances are running with the same config (otherwise
events may be dropped). events may be dropped).
Example configuration: Example configuration for a single worker:
```yaml ```yaml
send_federation: false
federation_sender_instances: federation_sender_instances:
- federation_sender1 - federation_sender1
``` ```
And for multiple workers:
```yaml
federation_sender_instances:
- federation_sender1
- federation_sender2
```
--- ---
### `instance_map` ### `instance_map`
@ -3988,4 +4002,3 @@ background_updates:
min_batch_size: 10 min_batch_size: 10
default_batch_size: 50 default_batch_size: 50
``` ```

View File

@ -505,6 +505,9 @@ worker application type.
### `synapse.app.pusher` ### `synapse.app.pusher`
It is likely this option will be deprecated in the future and is not recommended for new
installations. Instead, [use `synapse.app.generic_worker` with the `pusher_instances`](usage/configuration/config_documentation.md#pusher_instances).
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 REST endpoints itself, but you should set
[`start_pushers: false`](usage/configuration/config_documentation.md#start_pushers) in the [`start_pushers: false`](usage/configuration/config_documentation.md#start_pushers) in the
@ -543,6 +546,9 @@ Note this worker cannot be load-balanced: only one instance should be active.
### `synapse.app.federation_sender` ### `synapse.app.federation_sender`
It is likely this option will be deprecated in the future and not recommended for
new installations. Instead, [use `synapse.app.generic_worker` with the `federation_sender_instances`](usage/configuration/config_documentation.md#federation_sender_instances).
Handles sending federation traffic to other servers. Doesn't handle any Handles sending federation traffic to other servers. Doesn't handle any
REST endpoints itself, but you should set REST endpoints itself, but you should set
[`send_federation: false`](usage/configuration/config_documentation.md#send_federation) [`send_federation: false`](usage/configuration/config_documentation.md#send_federation)
@ -639,7 +645,9 @@ equivalent to `synapse.app.generic_worker`:
* `synapse.app.client_reader` * `synapse.app.client_reader`
* `synapse.app.event_creator` * `synapse.app.event_creator`
* `synapse.app.federation_reader` * `synapse.app.federation_reader`
* `synapse.app.federation_sender`
* `synapse.app.frontend_proxy` * `synapse.app.frontend_proxy`
* `synapse.app.pusher`
* `synapse.app.synchrotron` * `synapse.app.synchrotron`