diff options
author | Erik Johnston <erik@matrix.org> | 2016-03-23 13:19:12 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-03-23 13:19:12 +0000 |
commit | e14baa7a3b3465968c4264c60c01144b0f8e6483 (patch) | |
tree | 892bc900bbcf7097d87e956ebb321ae4b2af6fa6 /synapse/storage/state.py | |
parent | Merge pull request #662 from matrix-org/erikj/state_cache (diff) | |
parent | Don't cache events in get_recent_events_for_room (diff) | |
download | synapse-e14baa7a3b3465968c4264c60c01144b0f8e6483.tar.xz |
Merge pull request #665 from matrix-org/erikj/dont_cache_events
Only cache events in the event cache
Diffstat (limited to 'synapse/storage/state.py')
-rw-r--r-- | synapse/storage/state.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/synapse/storage/state.py b/synapse/storage/state.py index f06c734c4e..eab2c5a8ce 100644 --- a/synapse/storage/state.py +++ b/synapse/storage/state.py @@ -14,9 +14,7 @@ # limitations under the License. from ._base import SQLBaseStore -from synapse.util.caches.descriptors import ( - cached, cachedInlineCallbacks, cachedList -) +from synapse.util.caches.descriptors import cached, cachedList from twisted.internet import defer @@ -155,8 +153,14 @@ class StateStore(SQLBaseStore): events = yield self._get_events(event_ids, get_prev_content=False) defer.returnValue(events) - @cachedInlineCallbacks(num_args=3) + @defer.inlineCallbacks def get_current_state_for_key(self, room_id, event_type, state_key): + event_ids = yield self._get_current_state_for_key(room_id, event_type, state_key) + events = yield self._get_events(event_ids, get_prev_content=False) + defer.returnValue(events) + + @cached(num_args=3) + def _get_current_state_for_key(self, room_id, event_type, state_key): def f(txn): sql = ( "SELECT event_id FROM current_state_events" @@ -167,9 +171,7 @@ class StateStore(SQLBaseStore): txn.execute(sql, args) results = txn.fetchall() return [r[0] for r in results] - event_ids = yield self.runInteraction("get_current_state_for_key", f) - events = yield self._get_events(event_ids, get_prev_content=False) - defer.returnValue(events) + return self.runInteraction("get_current_state_for_key", f) def _get_state_groups_from_groups(self, groups, types): """Returns dictionary state_group -> (dict of (type, state_key) -> event id) |