Articles in this section

C and Python clients does not obey rack preference in clusters with more than two racks

Problem Description

If you have a C or Python client configured to be rack aware against a cluster with more than two racks and RF=<racks>, you may see your client use nodes from other than the selected rack.

For example. In a 3 rack cluster with RF=3, you would expect that on a properly configured client, the bulk of the reads would go to the cluster selected by the rack_id policy setting. Instead you will see 2/3rds of the reads going to the selected rack with the remaining 1/3rd going to the other two racks.


Explanation

The reason that we only serve some of the partitions out of the same rack in the above situations, is that the C and Python client partition map only stores two replica levels (master and first prole) on the local client which results in some records being served off the specified rack.

 

Note that other clients store a full array of replicas in the partition map.


Solution

Currently there is no workaround for the C and Python client at this time. Other clients store a full array of replicas in the partition map and are not subject to the same limitations.


Applies To Earliest Version

Pre 4.9

Applies To Latest Version

Current Version
Was this article helpful?
0 out of 0 found this helpful