We appear to have encountered an issue with cassandra 0.7.5 after upgrading 
from 0.7.2. While doing a batch read using a get_range_slice against the ranges 
an individual node is master for we are able to reproduce consistently that the 
last two nodes in the ring, regardless of the ring size (we have a 60 node 
production cluster and a 12 node test cluster) perform this read over the 
network using replicas of executing locally. Every other node in the ring 
successfully reads locally.

To be sure there were no data consistency issues we performed a nodetool repair 
against both of these nodes and the issue persists. We also tried truncating 
the column family and repopulating, but the issue remains.

This seems to be related to CASSANDRA-2286 in 0.7.4. We always want to read 
data locally if it is available there. We use Cassandra.Client.describe_ring() 
to figure out which machine in the ring is master for which TokenRange. I then 
compare the master for each TokenRange against the localhost to find out which 
token ranges are owned by the local machine (remote reads are too slow for this 
type of batch processing). Once I know which TokenRanges are on each machine 
locally I get evenly sized splits using Cassandra.Client.describe_splits().


Adam

Reply via email to