This repository was archived by the owner on Apr 26, 2024. It is now read-only.
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
/sync
returns 404 with "Could not find event" if the last event in a room was rejected #12571
Closed
Description
/sync
requests fail with logs like the following:
2022-04-27 19:52:55,224 - synapse.http.server - 95 - INFO - GET-2574276 - <XForwardedForRequest at 0x7fbc161945d8 method='GET' uri='/_matrix/client/r0/sync?filter=139&timeout=0&since=s2893808910_757284974_3577632_1332288051_1339908640_3205332_474955574_3498902419_212414' clientproto='HTTP/1.1' site='21126'> SynapseError: 404 - Could not find event $4KSidiqM831pDAWAg0CikeahLWUySLhqAHadbBKtucI
The event id in question is a rejected event.
Stacktrace for the exception:
File "/home/synapse/src/synapse/handlers/sync.py", line 407, in current_sync_for_user
sync_config, since_token, full_state
File "/home/synapse/src/synapse/handlers/sync.py", line 1114, in generate_sync_result
sync_result_builder, account_data_by_room
File "/home/synapse/src/synapse/handlers/sync.py", line 1624, in _generate_sync_entry_for_rooms
await concurrently_execute(handle_room_entries, room_entries, 10)
File "/home/synapse/src/synapse/util/async_helpers.py", line 236, in concurrently_execute
_concurrently_execute_inner, (value for value in itertools.islice(it, limit))
File "/home/synapse/src/synapse/util/async_helpers.py", line 276, in yieldable_gather_results
raise dfe.subFailure.value from None
File "/home/synapse/env-py37/lib/python3.7/site-packages/twisted/internet/defer.py", line 1660, in _inlineCallbacks
result = current_context.run(gen.send, result)
File "/home/synapse/src/synapse/util/async_helpers.py", line 227, in _concurrently_execute_inner
await maybe_awaitable(func(value))
File "/home/synapse/src/synapse/handlers/sync.py", line 1619, in handle_room_entries
always_include=sync_result_builder.full_state,
File "/home/synapse/src/synapse/handlers/sync.py", line 2127, in _generate_room_entry
full_state=full_state,
File "/home/synapse/src/synapse/handlers/sync.py", line 956, in compute_state_delta
room_id, stream_position=since_token, state_filter=state_filter
File "/home/synapse/src/synapse/handlers/sync.py", line 669, in get_state_at
end_token=stream_position.room_key,
File "/home/synapse/src/synapse/storage/databases/main/stream.py", line 782, in get_last_event_in_room_before_stream_ordering
event = await self.get_event(event_id, get_prev_content=True)
File "/home/synapse/src/synapse/storage/databases/main/events_worker.py", line 402, in get_event
raise NotFoundError("Could not find event %s" % (event_id,))
It looks like get_last_event_in_room_before_stream_ordering
is returning that rejected event, and we're then trying to calculate the state at it.
Jaeger link for internal users: https://jaeger.proxy.matrix.org/trace/bc8f105a8857ad29?uiFind=562187d6a0f8c25a