diff --git a/src/main/java/org/apache/cassandra/service/StorageService.java b/src/main/java/org/apache/cassandra/service/StorageService.java index 88fd9cb..0477de3 100644 --- a/src/main/java/org/apache/cassandra/service/StorageService.java +++ b/src/main/java/org/apache/cassandra/service/StorageService.java @@ -332,7 +332,16 @@ public class StorageService extends NotificationBroadcasterSupport */ public Map getTokenToEndpointMap() { log(" getTokenToEndpointMap()"); - return c.getMapStrValue("/storage_service/tokens_endpoint"); + Map mapInetAddress = c.getMapStrValue("/storage_service/tokens_endpoint"); + // in order to preserve tokens in ascending order, we use LinkedHashMap here + Map mapString = new LinkedHashMap<>(mapInetAddress.size()); + List tokens = new ArrayList<>(mapInetAddress.keySet()); + Collections.sort(tokens); + for (String token : tokens) + { + mapString.put(token, mapInetAddress.get(token)); + } + return mapString; } /** Retrieve this hosts unique ID */