Details
-
Bug
-
Resolution: Done
-
Blocker
-
5.2.0.Beta4
-
None
Description
During a state transfer the entries are sent batched to chunks. However, if all entries are sent in the non-last chunk, the list in entriesBySegment.get(segmentId) is empty. The code for sending last chunks is following:
OutboundTransferTask.sendEntries(...)
... if (isLast) { for (int segmentId : segments) { List<InternalCacheEntry> entries = entriesBySegment.get(segmentId); if (entries == null) { chunks.add(new StateChunk(segmentId, InfinispanCollections.<InternalCacheEntry>emptyList(), true)); } } } ...
See that the check is entries == null but not entries.isEmpty().
This causes to leave some segments unfinished, never finishing the state transfer.