summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2018-03-01 15:30:57 +0000
committerErik Johnston <erik@matrix.org>2018-03-01 17:08:17 +0000
commit33bebb63f34aa947a9a48920589cd63d27f1235c (patch)
tree5fd38456ee5da398b453bc43b35c03e6bce87bc5
parentMerge pull request #2920 from matrix-org/erikj/retry_send_event (diff)
downloadsynapse-33bebb63f34aa947a9a48920589cd63d27f1235c.tar.xz
Add some caches to help read marker API
-rw-r--r--synapse/replication/slave/storage/account_data.py1
-rw-r--r--synapse/storage/account_data.py2
-rw-r--r--synapse/storage/events.py4
3 files changed, 5 insertions, 2 deletions
diff --git a/synapse/replication/slave/storage/account_data.py b/synapse/replication/slave/storage/account_data.py
index 6c8d2954d7..970ac4c24d 100644
--- a/synapse/replication/slave/storage/account_data.py
+++ b/synapse/replication/slave/storage/account_data.py
@@ -56,6 +56,7 @@ class SlavedAccountDataStore(TagsWorkerStore, AccountDataWorkerStore, BaseSlaved
                         (row.data_type, row.user_id,)
                     )
                 self.get_account_data_for_user.invalidate((row.user_id,))
+                self.get_account_data_for_room.invalidate((row.user_id, row.room_id,))
                 self._account_data_stream_cache.entity_has_changed(
                     row.user_id, token
                 )
diff --git a/synapse/storage/account_data.py b/synapse/storage/account_data.py
index 466194e96f..c062e03d13 100644
--- a/synapse/storage/account_data.py
+++ b/synapse/storage/account_data.py
@@ -133,6 +133,7 @@ class AccountDataWorkerStore(SQLBaseStore):
             for row in rows
         })
 
+    @cached(num_args=2)
     def get_account_data_for_room(self, user_id, room_id):
         """Get all the client account_data for a user for a room.
 
@@ -310,6 +311,7 @@ class AccountDataStore(AccountDataWorkerStore):
 
             self._account_data_stream_cache.entity_has_changed(user_id, next_id)
             self.get_account_data_for_user.invalidate((user_id,))
+            self.get_account_data_for_room.invalidate((user_id, room_id,))
 
         result = self._account_data_id_gen.get_current_token()
         defer.returnValue(result)
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index b63392a6cd..057b1be4d5 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -28,7 +28,7 @@ from synapse.util.logutils import log_function
 from synapse.util.metrics import Measure
 from synapse.api.constants import EventTypes
 from synapse.api.errors import SynapseError
-from synapse.util.caches.descriptors import cached
+from synapse.util.caches.descriptors import cached, cachedInlineCallbacks
 from synapse.types import get_domain_from_id
 
 from canonicaljson import encode_canonical_json
@@ -2033,7 +2033,7 @@ class EventsStore(EventsWorkerStore):
         to_2, so_2 = yield self._get_event_ordering(event_id2)
         defer.returnValue((to_1, so_1) > (to_2, so_2))
 
-    @defer.inlineCallbacks
+    @cachedInlineCallbacks(max_entries=5000)
     def _get_event_ordering(self, event_id):
         res = yield self._simple_select_one(
             table="events",