0
0
Fork 1
mirror of https://mau.dev/maunium/synapse.git synced 2024-12-20 14:54:14 +01:00

Fix race in presence handler where we evicted things from cache while handling a key therein

This commit is contained in:
Erik Johnston 2014-09-06 17:38:11 +01:00 committed by Emmanuel ROHEE
parent 7735aad9d6
commit 768ff1a850

View file

@ -796,11 +796,12 @@ class PresenceEventSource(object):
updates = [] updates = []
# TODO(paul): use a DeferredList ? How to limit concurrency. # TODO(paul): use a DeferredList ? How to limit concurrency.
for observed_user in cachemap.keys(): for observed_user in cachemap.keys():
if not (from_key < cachemap[observed_user].serial): cached = cachemap[observed_user]
if not (from_key < cached.serial):
continue continue
if (yield self.is_visible(observer_user, observed_user)): if (yield self.is_visible(observer_user, observed_user)):
updates.append((observed_user, cachemap[observed_user])) updates.append((observed_user, cached))
# TODO(paul): limit # TODO(paul): limit