summary refs log tree commit diff
path: root/synapse/push
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/push')
-rw-r--r--synapse/push/pusherpool.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/synapse/push/pusherpool.py b/synapse/push/pusherpool.py
index 7b1ce81e9a..8da444179c 100644
--- a/synapse/push/pusherpool.py
+++ b/synapse/push/pusherpool.py
@@ -123,10 +123,17 @@ class PusherPool:
             users_affected = yield self.store.get_push_action_users_in_range(
                 min_stream_id, max_stream_id
             )
+
+            deferreds = []
+
             for u in users_affected:
                 if u in self.pushers:
                     for p in self.pushers[u].values():
-                        yield p.on_new_notifications(min_stream_id, max_stream_id)
+                        deferreds.append(
+                            p.on_new_notifications(min_stream_id, max_stream_id)
+                        )
+
+            yield defer.gatherResults(deferreds)
         except:
             logger.exception("Exception in pusher on_new_notifications")
 
@@ -141,10 +148,17 @@ class PusherPool:
             )
             # This returns a tuple, user_id is at index 3
             users_affected = set([r[3] for r in updated_receipts])
+
+            deferreds = []
+
             for u in users_affected:
                 if u in self.pushers:
                     for p in self.pushers[u].values():
-                        yield p.on_new_receipts(min_stream_id, max_stream_id)
+                        deferreds.append(
+                                p.on_new_receipts(min_stream_id, max_stream_id)
+                        )
+
+            yield defer.gatherResults(deferreds)
         except:
             logger.exception("Exception in pusher on_new_receipts")