Details
-
Bug
-
Status: Open
-
Low
-
Resolution: Unresolved
-
Availability - Unavailable
-
Low
-
Normal
-
Code Inspection
Description
There is a very narrow and infrequent race window, in which two ring updates occur in a short space of time (or during an interval of no queries):
- thread A invalidates the cache after the first ring change, snapshots this version of the ring, and begins to calculate its natural endpoints
- thread B sees the second ring change, and invalidates the cache before thread A completes
- thread A writes its value to the cache, based on the old ring layout
Now, a stale view of the endpoints for this token will be persisted in AbstractReplicationStrategy until the next ring change (which may feasibly never occur)