mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 11:17:51 +00:00
- The server filter read each restricted event's state group before it checked for partial state, and through a cache that a prefill never reached. After an event got its full state, a retry could use the old partial group. It now checks first, then reads those groups from the database. A prefill of a Python cache now invalidates its Rust mirrors. - Catch-up ended in two steps, so a PDU that send_pdu skipped in between was lost until the next catch-up. One lock now covers both. - The sticky backlog query reads a fresh snapshot per statement, so events could expire between its cleanup and its retry. It now cleans up again, a few times, before giving up. - Tests for each, plus catch-up's batch limit, a failed catch-up send, module notification, a filtered-out sticky batch, the hand-off to Python, the backlog cleanup boundary and paging outstanding destinations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R5b7Ruy4cgt27Mjq6Ptxbb