mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 00:24:54 -04:00
Fixup pusher pool notifications
This commit is contained in:
parent
453dfe210b
commit
e7fd336a53
7 changed files with 23 additions and 8 deletions
|
@ -64,6 +64,12 @@ class PusherPool:
|
|||
self._pusher_shard_config = hs.config.push.pusher_shard_config
|
||||
self._instance_name = hs.get_instance_name()
|
||||
|
||||
# Record the last stream ID that we were poked about so we can get
|
||||
# changes since then. We set this to the current max stream ID on
|
||||
# startup as every individual pusher will have checked for changes on
|
||||
# startup.
|
||||
self._last_room_stream_id_seen = self.store.get_room_max_stream_ordering()
|
||||
|
||||
# map from user id to app_id:pushkey to pusher
|
||||
self.pushers = {} # type: Dict[str, Dict[str, Union[HttpPusher, EmailPusher]]]
|
||||
|
||||
|
@ -178,20 +184,27 @@ class PusherPool:
|
|||
)
|
||||
await self.remove_pusher(p["app_id"], p["pushkey"], p["user_name"])
|
||||
|
||||
async def on_new_notifications(self, min_stream_id, max_stream_id):
|
||||
async def on_new_notifications(self, max_stream_id):
|
||||
if not self.pushers:
|
||||
# nothing to do here.
|
||||
return
|
||||
|
||||
if max_stream_id < self._last_room_stream_id_seen:
|
||||
# Nothing to do
|
||||
return
|
||||
|
||||
prev_stream_id = self._last_room_stream_id_seen
|
||||
self._last_room_stream_id_seen = max_stream_id
|
||||
|
||||
try:
|
||||
users_affected = await self.store.get_push_action_users_in_range(
|
||||
min_stream_id, max_stream_id
|
||||
prev_stream_id, max_stream_id
|
||||
)
|
||||
|
||||
for u in users_affected:
|
||||
if u in self.pushers:
|
||||
for p in self.pushers[u].values():
|
||||
p.on_new_notifications(min_stream_id, max_stream_id)
|
||||
p.on_new_notifications(max_stream_id)
|
||||
|
||||
except Exception:
|
||||
logger.exception("Exception in pusher on_new_notifications")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue