You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In #537, a deadlock occurs because the reload operation blocks waiting
for other reloads to complete. This is to batch the individual reloads
through a blocking queue, which drains tasks as work is performed. Due
to in-flight reloads being tracked by a secondary map, the triggering
of a reload is performed with a map computation. This ensures that a
stale reload does not insert outdated data by the entry being removed
when the reload completes or the original entry was removed / modified.
Due to a reload blocking on a map lock, when the batch completes the
future's callback to remove the entry collides on the same map lock
due to hashing. This causes the task queue to never be reduced to
allow more work, so the reload holding the lock is stuck forever. Due
to hash collisions, other usages of the map (like eviction) may
collide and fully disrupt the cache from performing any more writes.
0 commit comments