Skip to content
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.

Race condition with room creation means room directory lacks read-after-write consistency in monolith mode #15526

@MadLittleMods

Description

@MadLittleMods

It's possible to query the room directory after the room creation and not see the room.

Reproduction steps

  1. Using monolith Synapse
  2. Create a public room called foo with /createRoom
  3. Immediately after seeing a successful create room response, search the room directory for the room (/publicRooms with { filter: { generic_search_term: 'foo' } })
  4. Notice that the room is missing from the response ❌

If you give the homeserver some time, the room will show up.

Notes

This regressed in #15229 where I guess the timing changed just enough for this to be possible. You can see the full bisect, investigation and context for how I noticed in matrix-org/matrix-viewer#208 (comment)

It seems like we're await'ing everywhere so not sure why this would happen. And seems weird that it would happen in monolith mode since there is not replication lag and we're awaiting everything.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-Create-RoomA-Room-DirectoryS-MinorBlocks non-critical functionality, workarounds exist.T-DefectBugs, crashes, hangs, security vulnerabilities, or other reported issues.X-RegressionSomething broke which worked on a previous releaseZ-Read-After-WriteA lack of read-after-write consistency, usually due to cache invalidation races with workers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions