]
Tristan Tarrant updated ISPN-5568:
----------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
KeyAffinityService race condition on view change
------------------------------------------------
Key: ISPN-5568
URL:
https://issues.jboss.org/browse/ISPN-5568
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 5.2.11.Final
Reporter: Dennis Reed
Assignee: Bartosz Baranowski
Fix For: 8.0.0.Beta2, 7.2.4.Final, 5.2.14.Final
KeyAffinityService#getKeyForAddress runs in a tight loop looking for keys:
{noformat}
queue = address2key.get(address)
while (result == null)
result = queue.poll()
{noformat}
KeyAffinityService#handleViewChange clears and resets the queue list on membership
change:
{noformat}
address2key.clear()
for each address
map.put(address, new queue)
{noformat}
If a view change comes in after getKeyForAddress gets the queue, and the queue is empty,
it will get stuck in a tight loop looking at the wrong queue forever while new keys are
added to the new queue.