mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 15:37:49 +00:00
`FederationSender` makes a `RustPerDestinationQueue` for each destination at the new `queues` level. It forwards the queue methods to Rust and provides the hooks: catch-up, the sticky backlog, the device EDUs, and recording a sent transaction (stream positions, the module callback, the metrics). The catch-up loop moves into `_CatchUpLoop`, which both queues share. `StickyEventBacklogTracker.load_backlog` splits the database part out of `prepare_transaction`. The sender, catch-up and sticky event tests also run at this level, with every reactor advance waiting for the Rust loops to settle. `test_send_receipts_thread` is skipped there: it depends on coroutine order, which the Rust loop changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R5b7Ruy4cgt27Mjq6Ptxbb