diff --git a/server/src/main/java/io/druid/client/CachingClusteredClient.java b/server/src/main/java/io/druid/client/CachingClusteredClient.java index 28135a8bb55cf3ee6d58b8ce0e06a8c9ba60beb2..ff374c3c4b1bb7f895d6ec75171be8a039023adf 100644 --- a/server/src/main/java/io/druid/client/CachingClusteredClient.java +++ b/server/src/main/java/io/druid/client/CachingClusteredClient.java @@ -183,7 +183,8 @@ public class CachingClusteredClient implements QueryRunner } if (queryCacheKey != null) { - Map, Cache.NamedKey> cacheKeys = Maps.newHashMap(); + // cache keys must preserve segment ordering, in order for shards to always be combined in the same order + Map, Cache.NamedKey> cacheKeys = Maps.newLinkedHashMap(); for (Pair segment : segments) { final Cache.NamedKey segmentCacheKey = CacheUtil.computeSegmentCacheKey( segment.lhs.getSegment().getIdentifier(),