summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-05-16 09:56:12 +0100
committerErik Johnston <erik@matrix.org>2019-05-16 10:02:14 +0100
commit33453419b0cbbe29d3f4b376e9eafab10d5d012a (patch)
tree2f98e18112d975eb91041361877f07e39ad0dc48 /synapse
parentAdd aggregations API (diff)
downloadsynapse-33453419b0cbbe29d3f4b376e9eafab10d5d012a.tar.xz
Add cache to relations
Diffstat (limited to 'synapse')
-rw-r--r--synapse/storage/relations.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/synapse/storage/relations.py b/synapse/storage/relations.py
index db4b842c97..1fd3d4fafc 100644
--- a/synapse/storage/relations.py
+++ b/synapse/storage/relations.py
@@ -21,6 +21,7 @@ from synapse.api.constants import RelationTypes
 from synapse.api.errors import SynapseError
 from synapse.storage._base import SQLBaseStore
 from synapse.storage.stream import generate_pagination_where_clause
+from synapse.util.caches.descriptors import cached
 
 logger = logging.getLogger(__name__)
 
@@ -109,6 +110,7 @@ class AggregationPaginationToken(object):
 
 
 class RelationsStore(SQLBaseStore):
+    @cached(tree=True)
     def get_relations_for_event(
         self,
         event_id,
@@ -216,6 +218,7 @@ class RelationsStore(SQLBaseStore):
             "get_recent_references_for_event", _get_recent_references_for_event_txn
         )
 
+    @cached(tree=True)
     def get_aggregation_groups_for_event(
         self,
         event_id,
@@ -353,3 +356,8 @@ class RelationsStore(SQLBaseStore):
                 "aggregation_key": aggregation_key,
             },
         )
+
+        txn.call_after(self.get_relations_for_event.invalidate_many, (parent_id,))
+        txn.call_after(
+            self.get_aggregation_groups_for_event.invalidate_many, (parent_id,)
+        )