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.