element-hq / element-hq/synapse
`TestFederationRoomsInvite` flake hitting unreachable `Exception: Missing state for event that is not user's own membership`
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 600
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 51
Description
`TestFederationRoomsInvite/Parallel/Remote_invited_user_can_reject_invite_when_homeserver_is_already_participating_in_the_room` appears to already be a common recorded test flake on https://github.com/element-hq/synapse/issues/18537 - Since most of the logs have expired on the previous runs linked in the issue, it's unclear if this is exact same thing. The last flake there was something different and overall, I don't recognize this kind of thing.
❌ https://github.com/element-hq/synapse/actions/runs/27547354887/job/81424518056?pr=19826
```shell
❌ TestFederationRoomsInvite/Parallel/Remote_invited_user_can_reject_invite_when_homeserver_is_already_participating_in_the_room (3.42s)
federation_rooms_invite_test.go:139: CSAPI.Must: GET http://127.0.0.1:32823/_matrix/client/v3/sync?since=s61_54_1_3_1_1_1_21_0_14_2_1_1&timeout=1000 returned non-2xx code: 500 Internal Server Error - body: {"errcode":"M_UNKNOWN","error":"Internal server error"}
```
The underlying thing we're running into is `Exception: Missing state for event that is not user's own membership`
Full Synapse error
```
synchrotron1 | 2026-06-15 13:08:26,912 - synapse.http.server - 147 - ERROR - GET-189 - Failed handle request via 'SyncRestServlet':
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/synapse/http/server.py", line 335, in _async_render_wrapper
callback_return = await self._async_render(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/http/server.py", line 576, in _async_render
callback_return = await raw_callback_return
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/rest/client/sync.py", line 271, in on_GET
sync_result = await self.sync_handler.wait_for_sync_for_user(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 366, in wait_for_sync_for_user
res = await self.response_cache.wrap(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<7 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/util/caches/response_cache.py", line 350, in wrap
return await make_deferred_yieldable(entry.result.observe())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/twisted/internet/defer.py", line 1187, in __iter__
yield self
File "/usr/local/lib/python3.13/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
result = context.run(
cast(Failure, result).throwExceptionIntoGenerator, gen
)
File "/usr/local/lib/python3.13/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
return g.throw(self.value.with_traceback(self.tb))
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/util/caches/response_cache.py", line 343, in cb
return await callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 490, in _wait_for_sync_for_user
result = await self.notifier.wait_for_events(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/notifier.py", line 705, in wait_for_events
result = await callback(prev_token, current_token)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 488, in current_sync_callback
return await self.current_sync_for_user(sync_config, since_token)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 548, in current_sync_for_user
sync_result = await self.generate_sync_result(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sync_config, since_token, full_state
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 1785, in generate_sync_result
) = await self._generate_sync_entry_for_rooms(sync_result_builder)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 2336, in _generate_sync_entry_for_rooms
await concurrently_execute(handle_room_entries, room_entries, 10)
File "/usr/local/lib/python3.13/site-packages/synapse/util/async_helpers.py", line 298, in concurrently_execute
await yieldable_gather_results(
...<2 lines>...
)
File "/usr/local/lib/python3.13/site-packages/synapse/util/async_helpers.py", line 347, in yieldable_gather_results
raise dfe.subFailure.value from None
File "/usr/local/lib/python3.13/site-packages/twisted/internet/defer.py", line 1857, in _inlineCallbacks
result = context.run(gen.send, result)
File "/usr/local/lib/python3.13/site-packages/synapse/util/async_helpers.py", line 284, in _concurrently_execute_inner
await maybe_awaitable(func(value))
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 2324, in handle_room_entries
await self._generate_room_entry(
...<7 lines>...
)
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 2786, in _generate_room_entry
batch = await self._load_filtered_recents(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<7 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/handlers/sync.py", line 739, in _load_filtered_recents
filtered_recents = await filter_and_transform_events_for_client(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/synapse/logging/opentracing.py", line 949, in _wrapper
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/visibility.py", line 241, in filter_and_transform_events_for_client
return [ev for ev in filtered_events if ev]
^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/synapse/visibility.py", line 227, in allowed
raise Exception("Missing state for event that is not user's own membership")
Exception: Missing state for event that is not user's own membership
```
Relevant code:
https://github.com/element-hq/synapse/blob/51805a0702f4fb94ceeeb40171a839272ed7da48/synapse/visibility.py#L226-L227
Contributor guide
Assessment
This issue has not been assessed yet.