summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/push/action_generator.py7
-rw-r--r--synapse/storage/event_push_actions.py12
2 files changed, 19 insertions, 0 deletions
diff --git a/synapse/push/action_generator.py b/synapse/push/action_generator.py
index bcd40798f9..4cf94f6c61 100644
--- a/synapse/push/action_generator.py
+++ b/synapse/push/action_generator.py
@@ -19,6 +19,8 @@ import bulk_push_rule_evaluator
 
 import logging
 
+from synapse.api.constants import EventTypes
+
 logger = logging.getLogger(__name__)
 
 
@@ -34,6 +36,11 @@ class ActionGenerator:
 
     @defer.inlineCallbacks
     def handle_push_actions_for_event(self, event, handler):
+        if event.type == EventTypes.Redaction and event.redacts is not None:
+            yield self.store.remove_push_actions_for_event_id(
+                event.room_id, event.redacts
+            )
+
         bulk_evaluator = yield bulk_push_rule_evaluator.evaluator_for_room_id(
             event.room_id, self.store
         )
diff --git a/synapse/storage/event_push_actions.py b/synapse/storage/event_push_actions.py
index 0634af6b62..5b44431ab9 100644
--- a/synapse/storage/event_push_actions.py
+++ b/synapse/storage/event_push_actions.py
@@ -93,6 +93,18 @@ class EventPushActionsStore(SQLBaseStore):
         )
         defer.returnValue(ret)
 
+    @defer.inlineCallbacks
+    def remove_push_actions_for_event_id(self, room_id, event_id):
+        def f(txn):
+            txn.execute(
+                "DELETE FROM event_push_actions WHERE room_id = ? AND event_id = ?",
+                (room_id, event_id)
+            )
+        yield self.runInteraction(
+            "remove_push_actions_for_event_id",
+            f
+        )
+
 
 class EventPushActionsTable(object):
     table_name = "event_push_actions"