From c02938c67007be1127438df61d986f7ce6de1bea Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Tue, 21 Jan 2025 10:09:29 +0000 Subject: [PATCH] Check that we have persisted the events --- synapse/state/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/synapse/state/__init__.py b/synapse/state/__init__.py index fe09d9fd4b..52770dfd18 100644 --- a/synapse/state/__init__.py +++ b/synapse/state/__init__.py @@ -59,6 +59,7 @@ from synapse.types.state import StateFilter from synapse.util.async_helpers import Linearizer from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.metrics import Measure, measure_func +from synapse.util.stringutils import shortstr if TYPE_CHECKING: from synapse.server import HomeServer @@ -500,6 +501,15 @@ class StateHandler: """ logger.debug("resolve_state_groups event_ids %s", event_ids) + # Check we have the events persisted as non-outliers, to ensure we have + # the state. + persisted_event_ids = await self.store.have_events_in_timeline(event_ids) + missing_event_ids = set(event_ids) - persisted_event_ids + if missing_event_ids: + raise Exception( + f"Trying to resolve state across events we have not persisted: {shortstr(missing_event_ids)}", + ) + state_groups = await self._state_storage_controller.get_state_group_for_events( event_ids, await_full_state=await_full_state )