mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-11 23:07:47 +00:00
The Rust pool set REPEATABLE READ as the session's default transaction isolation, so autocommit statements ran at REPEATABLE READ too. psycopg2 applies its isolation level only to the transactions it opens, and autocommit statements keep the server's default of READ COMMITTED. Synapse's worker read/write lock release runs in autocommit mode and relies on that: Complement's TestMSC3757OwnedState failed on the Rust driver with a foreign-key violation while releasing a lock, and passed on psycopg2. Mirror psycopg2: the connection opens its implicit transactions with `BEGIN ISOLATION LEVEL ...` (REPEATABLE READ unless the engine's `set_isolation_level` says otherwise), and the pool no longer touches the session default. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ULdieJyQoHNzeHq42H2M1p