purge: move room_depth update to end

... to avoid locking the table for too long
pull/2858/head
Richard van der Hoff 2018-02-09 12:13:34 +00:00
parent 74fcbf741b
commit 39a6b35496
1 changed files with 12 additions and 6 deletions

View File

@ -2255,12 +2255,6 @@ class EventsStore(SQLBaseStore):
event_id,
))
logger.info("[purge] updating room_depth")
txn.execute(
"UPDATE room_depth SET min_depth = ? WHERE room_id = ?",
(topological_ordering, room_id,)
)
# Delete all remote non-state events
for table in (
"events",
@ -2298,6 +2292,18 @@ class EventsStore(SQLBaseStore):
]
)
# synapse tries to take out an exclusive lock on room_depth whenever it
# persists events (because upsert), and once we run this update, we
# will block that for the rest of our transaction.
#
# So, let's stick it at the end so that we don't block event
# persistence.
logger.info("[purge] updating room_depth")
txn.execute(
"UPDATE room_depth SET min_depth = ? WHERE room_id = ?",
(topological_ordering, room_id,)
)
logger.info("[purge] done")
@defer.inlineCallbacks