race condition in DistributionManagerImpl
-----------------------------------------
Key: ISPN-925
URL:
https://issues.jboss.org/browse/ISPN-925
Project: Infinispan
Issue Type: Bug
Components: Core API, State transfer
Affects Versions: 4.2.0.Final
Reporter: Mircea Markus
Assignee: Mircea Markus
Priority: Critical
Fix For: 4.2.1.Final, 5.0.0.ALPHA3, 5.0.0.Final
This is causing StateTransferLargeObjectTest to fail intermittently (about 1/500 runs).
Nasty race condition in DistributionManagerImpl
1. if a node leaves then the new consistent hash is first set ( consistentHash =
ConsistentHashHelper.removeAddress(consistentHash, leaver, configuration, topologyInfo);)
2. then an InvertedLeaveTask is triggered if needed
3 this would add the leaver to DMI.levers and set the rehashInProgress flag of DMImpl to
true (RehashTask.call)
Now if a get call happens between 1 and 3 then then the the system would not go remotley.
The "go remotly if there's a rehash going on" condition happens in
DistInterceptor.visitGetKeyValueCommand:
boolean isRehashInProgress = !dm.isJoinComplete() || dm.isRehashInProgress();
if the isRehashInProgress is set to true then we go remotly even if the key is mapped to
the local node. Nasty!
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira