synapse workers: supply systemd with actual worker PIDs (requires jq)

also, worker.yaml.j2:
  - hone worker_name
  - remove worker_pid_file entry (would only be used if worker_daemonize
    set to true; also, synapse only knows about the container namespace
    and thus can not provide the required host-view PID)
This commit is contained in:
Marcel Partap
2020-10-22 20:53:41 +02:00
parent d2e61af224
commit 501efee07e
5 changed files with 50 additions and 6 deletions

View File

@ -3,8 +3,8 @@
# alongside the homeserver main process.
# c.f. https://github.com/matrix-org/synapse/pull/4662
[Unit]
Description=Synapse Matrix Worker
AssertPathExists={{matrix_synapse_config_dir_path }}/worker.%i.yaml
Description=Matrix worker synapse.app.%i
AssertPathExists={{ matrix_synapse_config_dir_path }}/worker.%i.yaml
After=matrix-synapse.service
BindsTo=matrix-synapse.service
@ -23,9 +23,13 @@ ExecStart=/bin/sh -c "WORKER=%i; WORKER=$${WORKER%%:*}; \
matrix-synapse \
python -m synapse.app.$${WORKER} -c /data/homeserver.yaml -c /data/worker.%i.yaml"
# wait for worker startup & write out PID of actual worker process so systemd can handle it
ExecStartPost=/bin/sleep 5
ExecStartPost=/usr/local/bin/matrix-synapse-worker-write-pid %i /run/matrix-synapse-worker.%i.pid
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/usr/bin/docker exec matrix-synapse pkill -f %i
PIDFile=/matrix-run/{{ item.worker }}.port{{ item.port }}.pid
ExecStop=/bin/kill $MAINPID
PIDFile=/run/matrix-synapse-worker.%i.pid
KillMode=process
Restart=always
RestartSec=10

View File

@ -1,6 +1,6 @@
#jinja2: lstrip_blocks: "True"
worker_app: synapse.app.{{ item.worker }}
worker_name: {{ item.worker ~ '_' ~ item.port }}
worker_name: {{ item.worker ~ ':' ~ item.port }}
worker_replication_host: 127.0.0.1
worker_replication_http_port: {{ matrix_synapse_replication_http_port }}
@ -26,5 +26,4 @@ worker_main_http_uri: http://127.0.0.1:8008
{% endif %}
worker_daemonize: false
worker_pid_file: /matrix-run/{{ item.worker }}.port{{ item.port }}.pid
worker_log_config: /data/{{ matrix_server_fqn_matrix }}.log.config