[
https://issues.jboss.org/browse/ISPN-1077?page=com.atlassian.jira.plugin....
]
Mircea Markus commented on ISPN-1077:
-------------------------------------
More things after looking at the code:
DistributionManagerImpl.rehash doesn't handle the leave of multiple nodes well even if
the notification is done once per leaver:
- if there's an InvertedLeaveTask running then it is canceled
- the list of leavers is then updated to also include the new leaver
- the stateProviders and receiversOfLeaverState is calculated based on the last leaver
only - it should be calculated based on the entire set of leavers
Multiple leaves are not handled correctly with DIST
----------------------------------------------------
Key: ISPN-1077
URL:
https://issues.jboss.org/browse/ISPN-1077
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 4.2.1.FINAL
Reporter: Mircea Markus
Assignee: Mircea Markus
Fix For: 4.2.2.FINAL, 5.0.0.FINAL
Attachments: MultipleNodesLeavingTest.java
When multiple caches are leaving at the same time(i.e. the diff between jgroups views is
more than one address), Infinispan ends up with an inconsistent hash function: it is aware
about nodes that are no longer present in the cluster.
The root cause of the problem is in DistributionManagerImpl.rehash(...):
- the list of leavers is determined as follows:
Address leaver = MembershipArithmetic.getMemberLeft(oldMembers, newMembers);
- this method always assumes a single leaver, but there can be many.
Unit test attached.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira