Skip to content

Commit 578d973

Browse files
erikjohnstonphil-flex
authored andcommitted
Allow ReplicationRestResource to be added to workers (matrix-org#7515)
This allows workers to talk to each other over HTTP replication.
1 parent 870d559 commit 578d973

3 files changed

Lines changed: 13 additions & 5 deletions

File tree

changelog.d/7515.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Allow `ReplicationRestResource` to be added to workers.

synapse/app/generic_worker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
from synapse.logging.context import LoggingContext
4848
from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy
4949
from synapse.metrics.background_process_metrics import run_as_background_process
50+
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
5051
from synapse.replication.slave.storage._base import BaseSlavedStore
5152
from synapse.replication.slave.storage.account_data import SlavedAccountDataStore
5253
from synapse.replication.slave.storage.appservice import SlavedApplicationServiceStore
@@ -570,6 +571,9 @@ def _listen_http(self, listener_config):
570571
if name in ["keys", "federation"]:
571572
resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self)
572573

574+
if name == "replication":
575+
resources[REPLICATION_PREFIX] = ReplicationRestResource(self)
576+
573577
root_resource = create_resource_tree(resources, NoResource())
574578

575579
_base.listen_tcp(

synapse/replication/http/__init__.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,12 @@ def __init__(self, hs):
3434

3535
def register_servlets(self, hs):
3636
send_event.register_servlets(hs, self)
37-
membership.register_servlets(hs, self)
3837
federation.register_servlets(hs, self)
39-
login.register_servlets(hs, self)
40-
register.register_servlets(hs, self)
41-
devices.register_servlets(hs, self)
42-
streams.register_servlets(hs, self)
38+
39+
# The following can't currently be instantiated on workers.
40+
if hs.config.worker.worker_app is None:
41+
membership.register_servlets(hs, self)
42+
login.register_servlets(hs, self)
43+
register.register_servlets(hs, self)
44+
devices.register_servlets(hs, self)
45+
streams.register_servlets(hs, self)

0 commit comments

Comments
 (0)