-
Notifications
You must be signed in to change notification settings - Fork 486
Description
Description
In an initial /sync request, the state_after events don't include the member events for the heroes in a room. This causes Element Web to be missing display name / avatar data for DM targets.
Spawning from https://github.com/element-hq/customer-success/issues/656 but I also have a local reproduction now.
Also discussed in the internal backend team lobby room.
Steps to reproduce
- Have a synapse with
state_afterenabled and a recent Element Web - Create DM with someone
- Accept the invite to the DM on whatever other client
- Have another room, focus that room
- Refresh Element Web
Notice that, in the room list, the room is now listed as the raw user_id of the DM target.
Alternatively, do sync request like this:
http://localhost:8008/_matrix/client/v3/sync?filter=%7B%22room%22%3A%7B%22timeline%22%3A%7B%22unread_thread_notifications%22%3Atrue%2C%22limit%22%3A20%7D%2C%22state%22%3A%7B%22lazy_load_members%22%3Atrue%7D%7D%7D&timeout=0&org.matrix.msc4222.use_state_after=true&_cacheBuster=1770830976329
In that sync response, observe that the target of the DM appears in heroes but their member event does not appear in state_after.
From the spec, I believe heroes should always be included in the state for a room in the initial sync (whether it's state or state_after).
Homeserver
localhost
Synapse Version
Installation Method
Other (please mention below)
Database
sqlite
Workers
Single process
Platform
ESS + running locally from develop source
Configuration
No response
Relevant log output
2026-02-11 18:18:55,705 - synapse.config.logger - 377 - WARNING - main - ***** STARTING SERVER *****
2026-02-11 18:18:55,705 - synapse.config.logger - 378 - WARNING - main - Server /Users/dave/matrix/synapse/synapse/app/homeserver.py version 1.147.0 (b=develop,52fb6e98ac)
2026-02-11 18:18:55,705 - synapse.config.logger - 383 - WARNING - main - Copyright (c) 2023 New Vector, Inc
2026-02-11 18:18:55,705 - synapse.config.logger - 384 - WARNING - main - Licensed under the AGPL 3.0 license. Website: https://github.com/element-hq/synapse
2026-02-11 18:18:55,705 - synapse.config.logger - 387 - INFO - main - Server hostname: localhost
2026-02-11 18:18:55,705 - synapse.config.logger - 388 - INFO - main - Public Base URL: https://localhost/
2026-02-11 18:18:55,705 - synapse.config.logger - 389 - INFO - main - Instance name: master
2026-02-11 18:18:55,705 - synapse.config.logger - 390 - INFO - main - Twisted reactor: SelectReactor
2026-02-11 18:18:55,705 - synapse.app.homeserver - 417 - INFO - main - Setting up server
2026-02-11 18:18:55,705 - synapse.server - 634 - INFO - main - Setting up.
2026-02-11 18:18:55,706 - synapse.storage.databases - 92 - INFO - main - [database config 'master']: Checking database server
2026-02-11 18:18:55,706 - synapse.storage.databases - 95 - INFO - main - [database config 'master']: Preparing for databases ['main', 'state']
2026-02-11 18:18:55,707 - synapse.storage.prepare_database - 132 - INFO - main - ['main', 'state']: Checking existing schema version
2026-02-11 18:18:55,707 - synapse.storage.prepare_database - 136 - INFO - main - ['main', 'state']: Existing schema is 93 (+5 deltas)
2026-02-11 18:18:55,707 - synapse.storage.databases.main - 401 - INFO - main - Checking database for consistency with configuration...
2026-02-11 18:18:55,707 - synapse.storage.prepare_database - 430 - INFO - main - Applying schema deltas for v93
2026-02-11 18:18:55,707 - synapse.storage.prepare_database - 565 - INFO - main - Schema now up to date
2026-02-11 18:18:55,708 - synapse.storage.databases - 110 - INFO - main - [database config 'master']: Starting 'main' database
2026-02-11 18:18:55,710 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for push_rules(id): 1
2026-02-11 18:18:55,712 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for push_rules_enable(id): 1
2026-02-11 18:18:55,712 - synapse.storage.databases.main.event_push_actions - 1238 - INFO - main - Searching for stream ordering 1 month ago
2026-02-11 18:18:55,712 - synapse.storage.databases.main.event_push_actions - 1242 - INFO - main - Found stream ordering 1 month ago: it's 10
2026-02-11 18:18:55,712 - synapse.storage.databases.main.event_push_actions - 1245 - INFO - main - Searching for stream ordering 1 day ago
2026-02-11 18:18:55,712 - synapse.storage.databases.main.event_push_actions - 1249 - INFO - main - Found stream ordering 1 day ago: it's 10
2026-02-11 18:18:55,713 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for access_tokens(id): 2
2026-02-11 18:18:55,713 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for refresh_tokens(id): 1
2026-02-11 18:18:55,713 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for event_reports(id): 1
2026-02-11 18:18:55,713 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for room_reports(id): 1
2026-02-11 18:18:55,713 - synapse.storage.util.id_generators - 91 - INFO - main - Initialising stream generator for user_reports(id): 1
2026-02-11 18:18:55,713 - synapse.storage.databases - 127 - INFO - main - [database config 'master']: Starting 'state' database
2026-02-11 18:18:55,714 - synapse.storage.databases - 143 - INFO - main - [database config 'master']: prepared
2026-02-11 18:18:55,714 - synapse.server - 637 - INFO - main - Finished setting up.
2026-02-11 18:18:55,714 - twisted - 273 - INFO - main - Redirected stdout/stderr to logs
2026-02-11 18:18:55,714 - synapse.app.homeserver - 213 - INFO - main - Running
2026-02-11 18:18:55,714 - synapse.app.homeserver - 36 - INFO - main - Set file limit to: 9223372036854775807
2026-02-11 18:18:55,714 - synapse.metrics._gc - 130 - INFO - main - Collecting gc 2
2026-02-11 18:18:55,762 - synapse.push.pusher - 45 - INFO - call_when_running - email enable notifs: False
2026-02-11 18:18:55,776 - synapse.federation.federation_server - 1449 - INFO - call_when_running - Registering federation query handler for 'profile'
2026-02-11 18:18:55,776 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.device_list_update'
2026-02-11 18:18:55,776 - synapse.util.caches.lrucache - 241 - INFO - call_when_running - Expiring LRU caches after 1800 seconds
2026-02-11 18:18:55,778 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.presence'
2026-02-11 18:18:55,778 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.typing'
2026-02-11 18:18:55,778 - synapse.federation.federation_server - 1449 - INFO - call_when_running - Registering federation query handler for 'directory'
2026-02-11 18:18:55,780 - synapse.handlers.deactivate_account - 281 - INFO - user_parter_loop-0 - Starting user parter
2026-02-11 18:18:55,780 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.receipt'
2026-02-11 18:18:55,781 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.signing_key_update'
2026-02-11 18:18:55,781 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'org.matrix.signing_key_update'
2026-02-11 18:18:55,781 - synapse.federation.federation_server - 1449 - INFO - call_when_running - Registering federation query handler for 'client_keys'
2026-02-11 18:18:55,781 - synapse.federation.federation_server - 1429 - INFO - call_when_running - Registering federation EDU handler for 'm.direct_to_device'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.health.HealthResource object at 0x10d1a4c20> to path b'/health'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.ClientRestResource object at 0x10d1a4d70> to path b'/_matrix/client'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <twisted.web.resource.Resource object at 0x10d23ba10> to path b'/.well-known'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.http.server.JsonResource object at 0x10d22aba0> to path b'/_synapse/admin'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.synapse.client.pick_idp.PickIdpResource object at 0x10d23be00> to path b'/_synapse/client/pick_idp'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <twisted.web.resource.Resource object at 0x10d230690> to path b'/_synapse/client/pick_username'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.synapse.client.new_user_consent.NewUserConsentResource object at 0x10d240440> to path b'/_synapse/client/new_user_consent'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.synapse.client.sso_register.SsoRegisterResource object at 0x10d240590> to path b'/_synapse/client/sso_register'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.synapse.client.unsubscribe.UnsubscribeResource object at 0x10d2406e0> to path b'/_synapse/client/unsubscribe'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching FilePath('/Users/dave/matrix/synapse/synapse/static') to path b'/_matrix/static'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.media.media_repository_resource.MediaRepositoryResource object at 0x10d240ad0> to path b'/_matrix/media/r0'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.media.media_repository_resource.MediaRepositoryResource object at 0x10d240ad0> to path b'/_matrix/media/v3'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.media.media_repository_resource.MediaRepositoryResource object at 0x10d240ad0> to path b'/_matrix/media/v1'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.federation.transport.server.TransportLayerServer object at 0x10d241400> to path b'/_matrix/federation'
2026-02-11 18:18:55,784 - synapse.util.httpresourcetree - 55 - INFO - call_when_running - Attaching <synapse.rest.key.v2.KeyResource object at 0x10d258050> to path b'/_matrix/key'
2026-02-11 18:18:55,786 - twisted - 273 - INFO - call_when_running - SynapseSite starting on 8008
2026-02-11 18:18:55,786 - twisted - 273 - INFO - call_when_running - SynapseSite starting on 8008
2026-02-11 18:18:55,786 - synapse.app._base - 509 - INFO - call_when_running - Synapse now listening on TCP port 8008
2026-02-11 18:18:55,820 - synapse.storage.background_updates - 416 - INFO - background_updates-0 - Starting background schema updates for database master
2026-02-11 18:18:55,821 - synapse.handlers.deactivate_account - 291 - INFO - user_parter_loop-0 - User parter finished: stopping
2026-02-11 18:18:55,821 - synapse.push.pusherpool - 382 - INFO - start_pushers-0 - Started pushers
2026-02-11 18:18:55,822 - synapse.storage.background_updates - 434 - INFO - background_updates-0 - No more background updates to do. Unscheduling background update task.
2026-02-11 18:18:56,153 - synapse.access.http.8008 - 641 - INFO - GET-0 - ::1 - 8008 - {@davetest:localhost} Processed request: 0.024sec/0.000sec (0.000sec, 0.000sec) (0.007sec/0.012sec/50) 18292B 200 "GET /_matrix/client/v3/sync?filter=%7B%22room%22%3A%7B%22timeline%22%3A%7B%22unread_thread_notifications%22%3Atrue%2C%22limit%22%3A20%7D%2C%22state%22%3A%7B%22lazy_load_members%22%3Atrue%7D%7D%7D&timeout=0&org.matrix.msc4222.use_state_after=true&_cacheBuster=1770830976329 HTTP/1.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" [18 dbevts]
2026-02-11 18:18:57,389 - synapse.access.http.8008 - 641 - INFO - GET-1 - ::1 - 8008 - {None} Processed request: 0.000sec/0.000sec (0.000sec, 0.000sec) (0.000sec/0.000sec/0) 1210B 200 "GET /_matrix/client/versions HTTP/1.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" [0 dbevts]
2026-02-11 18:18:57,481 - synapse.access.http.8008 - 641 - INFO - GET-3 - ::1 - 8008 - {@davetest:localhost} Processed request: 0.002sec/0.000sec (0.000sec, 0.000sec) (0.000sec/0.000sec/4) 159B 200 "GET /_matrix/client/v3/sync?filter=0&timeout=0&org.matrix.msc4222.use_state_after=true&set_presence=unavailable&since=s27_1753_0_63_57_1_2_21_0_1_1_1 HTTP/1.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" [0 dbevts]
2026-02-11 18:18:57,954 - twisted - 273 - INFO - sentinel - Received SIGINT, shutting down.
2026-02-11 18:18:57,955 - synapse.storage.databases.main.lock - 117 - INFO - LockStore._on_shutdown-0 - Dropping held locks due to shutdown
2026-02-11 18:18:57,955 - synapse.storage.databases.main.lock - 128 - INFO - LockStore._on_shutdown-0 - Dropped locks due to shutdown
2026-02-11 18:18:57,956 - synapse.handlers.presence - 910 - INFO - PresenceHandler._on_shutdown-0 - Performing _on_shutdown. Persisting 1 unpersisted changes
2026-02-11 18:18:57,956 - synapse.app._base - 740 - INFO - log_shutdown - Shutting down...
2026-02-11 18:18:57,956 - synapse.http.site - 553 - INFO - GET-5 - Connection from client lost before response was sent
2026-02-11 18:18:57,956 - twisted - 273 - INFO - sentinel - (TCP Port 8008 Closed)
2026-02-11 18:18:57,956 - twisted - 273 - INFO - sentinel - (TCP Port 8008 Closed)
2026-02-11 18:18:57,958 - twisted - 273 - INFO - sentinel - Main loop terminated.Anything else that would be useful to know?
No response