summary refs log tree commit diff
path: root/synapse/storage/receipts.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-05-03 14:22:33 +0100
committerErik Johnston <erik@matrix.org>2016-05-03 14:22:33 +0100
commit183f23f10d32ece4503f18e70296c88a1625ecff (patch)
tree4c09773f47638bc15e4f44f60cee6fb28da7bc97 /synapse/storage/receipts.py
parentFix more typos in per-request metrics (diff)
downloadsynapse-183f23f10d32ece4503f18e70296c88a1625ecff.tar.xz
Delete old pushers
Diffstat (limited to 'synapse/storage/receipts.py')
-rw-r--r--synapse/storage/receipts.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/synapse/storage/receipts.py b/synapse/storage/receipts.py
index 935fc503d9..cd1b611a0c 100644
--- a/synapse/storage/receipts.py
+++ b/synapse/storage/receipts.py
@@ -244,6 +244,15 @@ class ReceiptsStore(SQLBaseStore):
             (user_id, room_id, receipt_type)
         )
 
+        res = self._simple_select_one_txn(
+            txn,
+            table="events",
+            retcols=["topological_ordering", "stream_ordering"],
+            keyvalues={"event_id": event_id},
+        )
+        topological_ordering = int(res["topological_ordering"])
+        stream_ordering = int(res["stream_ordering"])
+
         # We don't want to clobber receipts for more recent events, so we
         # have to compare orderings of existing receipts
         sql = (
@@ -256,15 +265,6 @@ class ReceiptsStore(SQLBaseStore):
         results = txn.fetchall()
 
         if results:
-            res = self._simple_select_one_txn(
-                txn,
-                table="events",
-                retcols=["topological_ordering", "stream_ordering"],
-                keyvalues={"event_id": event_id},
-            )
-            topological_ordering = int(res["topological_ordering"])
-            stream_ordering = int(res["stream_ordering"])
-
             for to, so, _ in results:
                 if int(to) > topological_ordering:
                     return False
@@ -294,6 +294,14 @@ class ReceiptsStore(SQLBaseStore):
             }
         )
 
+        if receipt_type == "m.read":
+            self._remove_push_actions_before_txn(
+                txn,
+                room_id=room_id,
+                user_id=user_id,
+                topological_ordering=topological_ordering,
+            )
+
         return True
 
     @defer.inlineCallbacks