Safe async event cache (#13308)

Fix race conditions in the async cache invalidation logic, by separating
the async & local invalidation calls and ensuring any async call i
executed first.

Signed off by Nick @ Beeper (@Fizzadar).
This commit is contained in:
Nick Mills-Barrett 2022-07-19 13:25:29 +02:00 committed by GitHub
parent 7864f33e28
commit 2ee0b6ef4b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 102 additions and 21 deletions

View file

@ -304,7 +304,7 @@ class PurgeEventsStore(StateGroupWorkerStore, CacheInvalidationWorkerStore):
self._invalidate_cache_and_stream(
txn, self.have_seen_event, (room_id, event_id)
)
txn.call_after(self._invalidate_get_event_cache, event_id)
self.invalidate_get_event_cache_after_txn(txn, event_id)
logger.info("[purge] done")