summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorErik Johnston <erikj@jki.re>2016-09-15 14:50:09 +0100
committerGitHub <noreply@github.com>2016-09-15 14:50:09 +0100
commit1535f21eb50b3ccb0e06c4e41268942cb516d535 (patch)
treea80740335d559f06a7568aa633b7ac78ac2e0e00 /synapse/storage
parentMerge pull request #1122 from matrix-org/erikj/public_room_cache (diff)
parentUse stream_change cache to make get_forward_extremeties_for_room cache more e... (diff)
downloadsynapse-1535f21eb50b3ccb0e06c4e41268942cb516d535.tar.xz
Merge pull request #1123 from matrix-org/erikj/public_room_cache
Use stream_change cache to make get_forward_extremeties_for_room cache more effective
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/event_federation.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/storage/event_federation.py b/synapse/storage/event_federation.py
index 050b78d652..97d0c26475 100644
--- a/synapse/storage/event_federation.py
+++ b/synapse/storage/event_federation.py
@@ -344,8 +344,17 @@ class EventFederationStore(SQLBaseStore):
                 self.get_latest_event_ids_in_room.invalidate, (room_id,)
             )
 
-    @cached(max_entries=5000, num_args=2)
     def get_forward_extremeties_for_room(self, room_id, stream_ordering):
+        # We want to make the cache more effective, so we clamp to the last
+        # change before the given ordering.
+        last_change = self._events_stream_cache.get_pos_of_last_change(room_id)
+        if last_change:
+            stream_ordering = min(last_change, stream_ordering)
+
+        return self._get_forward_extremeties_for_room(room_id, stream_ordering)
+
+    @cached(max_entries=5000, num_args=2)
+    def _get_forward_extremeties_for_room(self, room_id, stream_ordering):
         """For a given room_id and stream_ordering, return the forward
         extremeties of the room at that point in "time".