From 8199475ce062c8ed7b050ddecd51c6c3ec22e560 Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Tue, 18 Aug 2015 11:44:10 +0100
Subject: [PATCH] Ensure we never return a None event from
 _get_state_for_groups

---
 synapse/storage/state.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index ab3ad5a076..b321412813 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -405,16 +405,21 @@ class StateStore(SQLBaseStore):
                 state_event = state_events[event_id]
                 state_dict[(state_event.type, state_event.state_key)] = state_event
 
+            results[group] = state_dict
+
             self._state_group_cache.update(
                 cache_seq_num,
                 key=group,
-                value=state_dict,
+                value=results[group],
                 full=(types is None),
             )
 
-            # We replace here to remove all the entries with None values.
+        # Remove all the entries with None values. The None values were just
+        # used for bookkeeping in the cache.
+        for group, state_dict in results.items():
             results[group] = {
-                key: value for key, value in state_dict.items() if value
+                key: event for key, event in state_dict.items()
+                if event
             }
 
         defer.returnValue(results)
-- 
GitLab