Details
-
Bug
-
Resolution: Won't Do
-
Critical
-
None
-
4.2.1.FINAL
-
None
-
None
Description
Specifically, the problem is with getStateProvidersOnLeave.
Assume you have nodes 1, 2, and 4.
Now node 3 joins.
This method will iterate over each address and will skip the joiner (node3).
For the remaining nodes it will call getOwners
e.g. - getOwners(node1), getOwners(node2), getOwners(node3)
This method will always begin by adding the first node in the tailMap which is the address that is being iterated over. Since numOwners is set to 1 it skips the while loop and returns the result.
So...
getOwners(1) returns
getOwners(2) returns
{node2}getOwners(4) returns
{node4}Now we return to getStateProvidersOnLeave
It now checks to see if the result contains the joiner (node3). However, it can never contain the joiner.