diff --git a/changelog.d/3473.bugfix b/changelog.d/3473.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..7244ab59f28444eb7e51058be46ab3a22f8e99ee
--- /dev/null
+++ b/changelog.d/3473.bugfix
@@ -0,0 +1 @@
+Invalidate cache on correct thread to avoid race
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index d816d4883c3703c0aa126555382883da09fc975c..a54abb9eddbe8016c1e9748fa09391d429e5de76 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -801,7 +801,8 @@ class EventsStore(EventsWorkerStore):
                     ]
                 )
 
-                self._curr_state_delta_stream_cache.entity_has_changed(
+                txn.call_after(
+                    self._curr_state_delta_stream_cache.entity_has_changed,
                     room_id, max_stream_order,
                 )