mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-05 13:17:54 +00:00
Loading and parsing events was most of a Rust resolution's time: against a warm Python event cache, Rust was level with Python. The handler now keeps the events it loads, keyed by event ID, so a resolution in a room it has seen reads them from memory. The conflict cache's LRU becomes a generic SizedLru shared by both caches. The Postgres store takes the event cache, reads it before the database and inserts what it loads. The stats report event cache hits and the time spent converting state to and from Python. Invalidation follows the Python event cache rather than having its own sources: EventsWorkerStore._invalidate_local_get_event_cache and the room-wide variant drop the same events from the Rust cache. Those two methods are where every event cache invalidation ends up, including a partial-state event's rejection status changing, which is the one change state resolution can observe. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ULdieJyQoHNzeHq42H2M1p