summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/storage/events.py9
-rw-r--r--synapse/storage/receipts.py10
-rw-r--r--synapse/storage/stream.py2
-rw-r--r--synapse/util/caches/room_change_cache.py4
4 files changed, 15 insertions, 10 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 80187722ea..2d2270b297 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -128,9 +128,6 @@ class EventsStore(SQLBaseStore):
                     is_new_state=is_new_state,
                     current_state=current_state,
                 )
-                self._events_stream_cache.room_has_changed(
-                    None, event.room_id, stream_ordering
-                )
         except _RollbackButIsFineException:
             pass
 
@@ -213,6 +210,12 @@ class EventsStore(SQLBaseStore):
         for event, _ in events_and_contexts:
             txn.call_after(self._invalidate_get_event_cache, event.event_id)
 
+            if not backfilled:
+                txn.call_after(
+                    self._events_stream_cache.room_has_changed,
+                    event.room_id, event.internal_metadata.stream_ordering,
+                )
+
         depth_updates = {}
         for event, _ in events_and_contexts:
             if event.internal_metadata.is_outlier():
diff --git a/synapse/storage/receipts.py b/synapse/storage/receipts.py
index 7118368d97..5ffbfdec51 100644
--- a/synapse/storage/receipts.py
+++ b/synapse/storage/receipts.py
@@ -78,7 +78,7 @@ class ReceiptsStore(SQLBaseStore):
 
         if from_key:
             room_ids = yield self._receipts_stream_cache.get_rooms_changed(
-                self, room_ids, from_key
+                room_ids, from_key
             )
 
         results = yield self._get_linearized_receipts_for_rooms(
@@ -221,6 +221,11 @@ class ReceiptsStore(SQLBaseStore):
         # FIXME: This shouldn't invalidate the whole cache
         txn.call_after(self.get_linearized_receipts_for_room.invalidate_all)
 
+        txn.call_after(
+            self._receipts_stream_cache.room_has_changed,
+            room_id, stream_id
+        )
+
         # We don't want to clobber receipts for more recent events, so we
         # have to compare orderings of existing receipts
         sql = (
@@ -308,9 +313,6 @@ class ReceiptsStore(SQLBaseStore):
 
         stream_id_manager = yield self._receipts_id_gen.get_next(self)
         with stream_id_manager as stream_id:
-            yield self._receipts_stream_cache.room_has_changed(
-                self, room_id, stream_id
-            )
             have_persisted = yield self.runInteraction(
                 "insert_linearized_receipt",
                 self.insert_linearized_receipt_txn,
diff --git a/synapse/storage/stream.py b/synapse/storage/stream.py
index 5096b46864..67e7e6a76f 100644
--- a/synapse/storage/stream.py
+++ b/synapse/storage/stream.py
@@ -169,7 +169,7 @@ class StreamStore(SQLBaseStore):
         from_id = RoomStreamToken.parse_stream_token(from_key).stream
 
         room_ids = yield self._events_stream_cache.get_rooms_changed(
-            self, room_ids, from_id
+            room_ids, from_id
         )
 
         if not room_ids:
diff --git a/synapse/util/caches/room_change_cache.py b/synapse/util/caches/room_change_cache.py
index 3a873c9c30..eb2ab5f1e4 100644
--- a/synapse/util/caches/room_change_cache.py
+++ b/synapse/util/caches/room_change_cache.py
@@ -51,7 +51,7 @@ class RoomStreamChangeCache(object):
 
         return False
 
-    def get_rooms_changed(self, store, room_ids, key):
+    def get_rooms_changed(self, room_ids, key):
         """Returns subset of room ids that have had new things since the
         given key. If the key is too old it will just return the given list.
         """
@@ -70,7 +70,7 @@ class RoomStreamChangeCache(object):
 
         return result
 
-    def room_has_changed(self, store, room_id, key):
+    def room_has_changed(self, room_id, key):
         """Informs the cache that the room has been changed at the given key.
         """
         if key > self._earliest_known_key: