diff --git a/src/java/org/apache/cassandra/db/memtable/ShardBoundaries.java b/src/java/org/apache/cassandra/db/memtable/ShardBoundaries.java index cb8b55cedbca..b5b9fb8d96af 100644 --- a/src/java/org/apache/cassandra/db/memtable/ShardBoundaries.java +++ b/src/java/org/apache/cassandra/db/memtable/ShardBoundaries.java @@ -68,12 +68,11 @@ public ShardBoundaries(List boundaries, long ringVersion) */ public int getShardForToken(Token tk) { - for (int i = 0; i < boundaries.length; i++) - { - if (tk.compareTo(boundaries[i]) <= 0) // boundaries are end-inclusive - return i; - } - return boundaries.length; + int idx = Arrays.binarySearch(boundaries, tk); + // boundaries are end-inclusive, so an exact match is the correct shard + if (idx >= 0) + return idx; + return -idx - 1; } /**