forked from MirrorHub/synapse
Fix bug when running presence off master (#10149)
Hopefully fixes #10027.
This commit is contained in:
parent
b31daac01c
commit
d26d15ba3d
3 changed files with 17 additions and 1 deletions
1
changelog.d/10149.bugfix
Normal file
1
changelog.d/10149.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a bug which caused presence updates to stop working some time after restart, when using a presence writer worker.
|
|
@ -50,7 +50,7 @@ class PresenceStore(SQLBaseStore):
|
||||||
instance_name=self._instance_name,
|
instance_name=self._instance_name,
|
||||||
tables=[("presence_stream", "instance_name", "stream_id")],
|
tables=[("presence_stream", "instance_name", "stream_id")],
|
||||||
sequence_name="presence_stream_sequence",
|
sequence_name="presence_stream_sequence",
|
||||||
writers=hs.config.worker.writers.to_device,
|
writers=hs.config.worker.writers.presence,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self._presence_id_gen = StreamIdGenerator(
|
self._presence_id_gen = StreamIdGenerator(
|
||||||
|
|
|
@ -397,6 +397,11 @@ class MultiWriterIdGenerator:
|
||||||
# ... persist event ...
|
# ... persist event ...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# If we have a list of instances that are allowed to write to this
|
||||||
|
# stream, make sure we're in it.
|
||||||
|
if self._writers and self._instance_name not in self._writers:
|
||||||
|
raise Exception("Tried to allocate stream ID on non-writer")
|
||||||
|
|
||||||
return _MultiWriterCtxManager(self)
|
return _MultiWriterCtxManager(self)
|
||||||
|
|
||||||
def get_next_mult(self, n: int):
|
def get_next_mult(self, n: int):
|
||||||
|
@ -406,6 +411,11 @@ class MultiWriterIdGenerator:
|
||||||
# ... persist events ...
|
# ... persist events ...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# If we have a list of instances that are allowed to write to this
|
||||||
|
# stream, make sure we're in it.
|
||||||
|
if self._writers and self._instance_name not in self._writers:
|
||||||
|
raise Exception("Tried to allocate stream ID on non-writer")
|
||||||
|
|
||||||
return _MultiWriterCtxManager(self, n)
|
return _MultiWriterCtxManager(self, n)
|
||||||
|
|
||||||
def get_next_txn(self, txn: LoggingTransaction):
|
def get_next_txn(self, txn: LoggingTransaction):
|
||||||
|
@ -416,6 +426,11 @@ class MultiWriterIdGenerator:
|
||||||
# ... persist event ...
|
# ... persist event ...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# If we have a list of instances that are allowed to write to this
|
||||||
|
# stream, make sure we're in it.
|
||||||
|
if self._writers and self._instance_name not in self._writers:
|
||||||
|
raise Exception("Tried to allocate stream ID on non-writer")
|
||||||
|
|
||||||
next_id = self._load_next_id_txn(txn)
|
next_id = self._load_next_id_txn(txn)
|
||||||
|
|
||||||
with self._lock:
|
with self._lock:
|
||||||
|
|
Loading…
Reference in a new issue