Details
-
Improvement
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
None
Description
During a move operation, we observed that the node streamed most of its data and received all its data.
We are running Cassandra 0.8.7 (plus a few patches)
After reading the code related to "move", we found out that :
- in StorageService.java, line 2002 and line 2004 => ranges are returned in a non ordered collection, but calculateStreamAndFetchRanges() method (line 2011) assume ranges are sorted, thus, resulting in wider ranges to be fetched/streamed
We managed to isolate and reproduce this in a unit test.
We also propose a patch which :
- does not rely on any sort
- adds a few unit tests (may not be exhaustive...)
Unit tests are done only for RF=2 and for the "OldNetworkStrategyTopology". For the sake of simplicity, we've put them in OldNetworkStrategyTopologyTest, but they probably should be moved.