summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-08-13 17:28:43 +0100
committerErik Johnston <erik@matrix.org>2015-08-13 17:28:43 +0100
commit129ee4e149095aa71c284cc5e1e7efa653222729 (patch)
treeb1b02e3ec821888644edd1d389d6adbca6c6459a /synapse
parentAdd metrics to the receipts cache (diff)
parentMerge pull request #219 from matrix-org/erikj/dictionary_cache (diff)
downloadsynapse-129ee4e149095aa71c284cc5e1e7efa653222729.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/receipts_take2
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/federation.py10
-rw-r--r--synapse/storage/state.py56
2 files changed, 15 insertions, 51 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 2bfd0a40e0..1e3dccf5a8 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -237,9 +237,7 @@ class FederationHandler(BaseHandler):
             )
         )
 
-        def redact_disallowed(event_and_state):
-            event, state = event_and_state
-
+        def redact_disallowed(event, state):
             if not state:
                 return event
 
@@ -273,13 +271,11 @@ class FederationHandler(BaseHandler):
 
             return event
 
-        res = map(redact_disallowed, [
-            (e, event_to_state[e.event_id])
+        defer.returnValue([
+            redact_disallowed(e, event_to_state[e.event_id])
             for e in events
         ])
 
-        defer.returnValue(res)
-
     @log_function
     @defer.inlineCallbacks
     def backfill(self, dest, room_id, limit, extremities=[]):
diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index abc5b66431..185f88fd7c 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -60,7 +60,6 @@ class StateStore(SQLBaseStore):
         )
 
         groups = set(event_to_groups.values())
-
         group_to_state = yield self._get_state_for_groups(groups)
 
         defer.returnValue({
@@ -201,10 +200,7 @@ class StateStore(SQLBaseStore):
 
                 txn.execute(sql, args)
 
-                results[group] = [
-                    r[0]
-                    for r in txn.fetchall()
-                ]
+                results[group] = [r[0] for r in txn.fetchall()]
 
             return results
 
@@ -235,20 +231,14 @@ class StateStore(SQLBaseStore):
         )
 
         groups = set(event_to_groups.values())
-
-        group_to_state = yield self._get_state_for_groups(
-            groups, types
-        )
+        group_to_state = yield self._get_state_for_groups(groups, types)
 
         event_to_state = {
             event_id: group_to_state[group]
             for event_id, group in event_to_groups.items()
         }
 
-        defer.returnValue({
-            event: event_to_state[event]
-            for event in event_ids
-        })
+        defer.returnValue({event: event_to_state[event] for event in event_ids})
 
     @cached(num_args=2, lru=True, max_entries=100000)
     def _get_state_group_for_event(self, room_id, event_id):
@@ -282,10 +272,7 @@ class StateStore(SQLBaseStore):
 
             return results
 
-        return self.runInteraction(
-            "_get_state_group_for_events",
-            f,
-        )
+        return self.runInteraction("_get_state_group_for_events", f)
 
     def _get_some_state_from_cache(self, group, types):
         """Checks if group is in cache. See `_get_state_for_groups`
@@ -332,8 +319,7 @@ class StateStore(SQLBaseStore):
         got_all = not (missing_types or types is None)
 
         return {
-            k: v
-            for k, v in state_dict.items()
+            k: v for k, v in state_dict.items()
             if include(k[0], k[1])
         }, missing_types, got_all
 
@@ -364,20 +350,15 @@ class StateStore(SQLBaseStore):
                 state_dict, missing_types, got_all = self._get_some_state_from_cache(
                     group, types
                 )
-
                 results[group] = state_dict
 
                 if not got_all:
-                    missing_groups_and_types.append((
-                        group,
-                        missing_types
-                    ))
+                    missing_groups_and_types.append((group, missing_types))
         else:
             for group in set(groups):
                 state_dict, got_all = self._get_all_state_from_cache(
                     group
                 )
-
                 results[group] = state_dict
 
                 if not got_all:
@@ -405,10 +386,7 @@ class StateStore(SQLBaseStore):
             get_prev_content=False
         )
 
-        state_events = {
-            e.event_id: e
-            for e in state_events
-        }
+        state_events = {e.event_id: e for e in state_events}
 
         # Now we want to update the cache with all the things we fetched
         # from the database.
@@ -418,22 +396,14 @@ class StateStore(SQLBaseStore):
                 # cache absence of the key, on the assumption that if we've
                 # explicitly asked for some types then we will probably ask
                 # for them again.
-                state_dict = {
-                    key: None
-                    for key in types
-                }
+                state_dict = {key: None for key in types}
                 state_dict.update(results[group])
             else:
                 state_dict = results[group]
 
-            evs = [
-                state_events[e_id] for e_id in state_ids
-                if e_id in state_events  # This can happen if event is rejected.
-            ]
-            state_dict.update({
-                (e.type, e.state_key): e
-                for e in evs
-            })
+            for event_id in state_ids:
+                state_event = state_events[event_id]
+                state_dict[(state_event.type, state_event.state_key)] = state_event
 
             self._state_group_cache.update(
                 cache_seq_num,
@@ -443,9 +413,7 @@ class StateStore(SQLBaseStore):
             )
 
             results[group].update({
-                key: value
-                for key, value in state_dict.items()
-                if value
+                key: value for key, value in state_dict.items() if value
             })
 
         defer.returnValue(results)