diff options
author | Erik Johnston <erik@matrix.org> | 2020-03-30 16:37:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-30 16:37:24 +0100 |
commit | 4f21c33be301b8ea6369039c3ad8baa51878e4d5 (patch) | |
tree | 82e127e643b07b00e3afa63d2c1ea99a8d856c70 /synapse/server.py | |
parent | Merge pull request #7160 from matrix-org/dbkr/always_send_own_device_list_upd... (diff) | |
download | synapse-4f21c33be301b8ea6369039c3ad8baa51878e4d5.tar.xz |
Remove usage of "conn_id" for presence. (#7128)
* Remove `conn_id` usage for UserSyncCommand. Each tcp replication connection is assigned a "conn_id", which is used to give an ID to a remotely connected worker. In a redis world, there will no longer be a one to one mapping between connection and instance, so instead we need to replace such usages with an ID generated by the remote instances and included in the replicaiton commands. This really only effects UserSyncCommand. * Add CLEAR_USER_SYNCS command that is sent on shutdown. This should help with the case where a synchrotron gets restarted gracefully, rather than rely on 5 minute timeout.
Diffstat (limited to 'synapse/server.py')
-rw-r--r-- | synapse/server.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/synapse/server.py b/synapse/server.py index c7ca2bda0d..cd86475d6b 100644 --- a/synapse/server.py +++ b/synapse/server.py @@ -103,6 +103,7 @@ from synapse.storage import DataStores, Storage from synapse.streams.events import EventSources from synapse.util import Clock from synapse.util.distributor import Distributor +from synapse.util.stringutils import random_string logger = logging.getLogger(__name__) @@ -230,6 +231,8 @@ class HomeServer(object): self._listening_services = [] self.start_time = None + self.instance_id = random_string(5) + self.clock = Clock(reactor) self.distributor = Distributor() self.ratelimiter = Ratelimiter() @@ -242,6 +245,14 @@ class HomeServer(object): for depname in kwargs: setattr(self, depname, kwargs[depname]) + def get_instance_id(self): + """A unique ID for this synapse process instance. + + This is used to distinguish running instances in worker-based + deployments. + """ + return self.instance_id + def setup(self): logger.info("Setting up.") self.start_time = int(self.get_clock().time()) |