Use READ COMMITTED isolation level when inserting read receipts (#12957)
parent
dd2d66b0c9
commit
04ca3a52f6
|
@ -0,0 +1 @@
|
|||
Use lower isolation level when inserting read receipts to avoid serialization errors. Contributed by Nick @ Beeper.
|
|
@ -36,6 +36,7 @@ from synapse.storage.database import (
|
|||
LoggingTransaction,
|
||||
)
|
||||
from synapse.storage.engines import PostgresEngine
|
||||
from synapse.storage.engines._base import IsolationLevel
|
||||
from synapse.storage.util.id_generators import (
|
||||
AbstractStreamIdTracker,
|
||||
MultiWriterIdGenerator,
|
||||
|
@ -764,6 +765,10 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
|||
linearized_event_id,
|
||||
data,
|
||||
stream_id=stream_id,
|
||||
# Read committed is actually beneficial here because we check for a receipt with
|
||||
# greater stream order, and checking the very latest data at select time is better
|
||||
# than the data at transaction start time.
|
||||
isolation_level=IsolationLevel.READ_COMMITTED,
|
||||
)
|
||||
|
||||
# If the receipt was older than the currently persisted one, nothing to do.
|
||||
|
|
Loading…
Reference in New Issue