[
https://issues.jboss.org/browse/ISPN-2574?page=com.atlassian.jira.plugin....
]
Adrian Nistor commented on ISPN-2574:
-------------------------------------
Two things were wrong:
1. An in-progress tasks that was fetching from a leaver was replaced by a new task from a
new source but the existing task should also be interrupted otherwise the transfer thread
is blocked forever.
2. The check in StateConsumerImpl.startTransferThread() that prevents two threads running
at the same time was unsafe and could result in no thread running at all which means tasks
pile up in taskQueue but are not processed.
Segment transfer not restarted if the owner fails
-------------------------------------------------
Key: ISPN-2574
URL:
https://issues.jboss.org/browse/ISPN-2574
Project: Infinispan
Issue Type: Bug
Components: State transfer
Affects Versions: 5.2.0.Beta4
Reporter: Radim Vansa
Assignee: Adrian Nistor
Priority: Critical
Fix For: 5.2.0.CR2
Imagine this situation in distributed cache with 3 owners:
1) The segment X is owned by nodes A, B, C
2) Node B fails -> CH_UPDATE and then REBALANCE_START are broadcasted
3) Node D starts transfer of segment X from C
4) Node C fails -> another CH_UPDATE is broadcasted
5) D handes the CH_UPDATE and removes the transfer of segment X from C, but does not
start another transfer from A
The {{addedSegments}} does not contain the restarted transfer, because all transfers from
write consistent hash are removed from it in the beginning - the segment is considered
received here although the transfer is still in progress.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira