diff options
author | Erik Johnston <erik@matrix.org> | 2020-07-16 15:12:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-16 15:12:54 +0100 |
commit | f2e38ca86711a8f80cf45d3182e426ed8967fc81 (patch) | |
tree | 5a46223ed7b3e50f018d96a09776b7e442619377 /synapse/replication/tcp | |
parent | Add ability to run multiple pusher instances (#7855) (diff) | |
download | synapse-f2e38ca86711a8f80cf45d3182e426ed8967fc81.tar.xz |
Allow moving typing off master (#7869)
Diffstat (limited to 'synapse/replication/tcp')
-rw-r--r-- | synapse/replication/tcp/handler.py | 9 | ||||
-rw-r--r-- | synapse/replication/tcp/streams/_base.py | 7 |
2 files changed, 13 insertions, 3 deletions
diff --git a/synapse/replication/tcp/handler.py b/synapse/replication/tcp/handler.py index 80f5df60f9..30d8de48fa 100644 --- a/synapse/replication/tcp/handler.py +++ b/synapse/replication/tcp/handler.py @@ -42,6 +42,7 @@ from synapse.replication.tcp.streams import ( EventsStream, FederationStream, Stream, + TypingStream, ) from synapse.util.async_helpers import Linearizer @@ -96,6 +97,14 @@ class ReplicationCommandHandler: continue + if isinstance(stream, TypingStream): + # Only add TypingStream as a source on the instance in charge of + # typing. + if hs.config.worker.writers.typing == hs.get_instance_name(): + self._streams_to_replicate.append(stream) + + continue + # Only add any other streams if we're on master. if hs.config.worker_app is not None: continue diff --git a/synapse/replication/tcp/streams/_base.py b/synapse/replication/tcp/streams/_base.py index 9076bbe9f1..7a42de3f7d 100644 --- a/synapse/replication/tcp/streams/_base.py +++ b/synapse/replication/tcp/streams/_base.py @@ -294,11 +294,12 @@ class TypingStream(Stream): def __init__(self, hs): typing_handler = hs.get_typing_handler() - if hs.config.worker_app is None: - # on the master, query the typing handler + writer_instance = hs.config.worker.writers.typing + if writer_instance == hs.get_instance_name(): + # On the writer, query the typing handler update_function = typing_handler.get_all_typing_updates else: - # Query master process + # Query the typing writer process update_function = make_http_update_function(hs, self.NAME) super().__init__( |