mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-11 23:07:47 +00:00
The queries of the per-room sync loop, on the native Postgres driver, each a port of the store method it is named after. A `SyncReader` is made per request and borrows a pooled connection for one group of statements at a time, so that a sync worker with hundreds of requests in flight does not pin a connection per room; a group that needs one snapshot runs in a `REPEATABLE READ READ ONLY` transaction. State groups are loaded whole, with the recursive CTE sent as one simple query per batch, and cached as full maps. The caches that copy a `@cached` function (rooms for user, room summary, partial state rooms, erased users, retention policies, event to state group, unread counts) live on the Rust store and are attached to the Python cache each names by the new `RustWorkerStore`, which also takes over building the Rust store. Unread counts are invalidated by room as well as by room and user, as the Python tree cache is. `tests/storage/test_sync_store.py` runs every query and the Python method against the same database, with multi-writer tokens, redactions of every kind, and the summary rotation of the unread counts. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194eNQP5weBtVMg8NKtc6VU
22 lines
613 B
Rust
22 lines
613 B
Rust
/*
|
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
|
*
|
|
* Copyright (C) 2026 Element Creations Ltd
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* See the GNU Affero General Public License for more details:
|
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
|
*
|
|
*/
|
|
|
|
pub mod caches;
|
|
pub mod db;
|
|
pub mod events;
|
|
pub mod python;
|
|
pub mod store;
|
|
pub mod sync_store;
|