diff --git a/server/src/main/java/io/druid/server/coordinator/CachingCostBalancerStrategy.java b/server/src/main/java/io/druid/server/coordinator/CachingCostBalancerStrategy.java index b9b9adb5d38..3050566ca2e 100644 --- a/server/src/main/java/io/druid/server/coordinator/CachingCostBalancerStrategy.java +++ b/server/src/main/java/io/druid/server/coordinator/CachingCostBalancerStrategy.java @@ -61,7 +61,11 @@ public class CachingCostBalancerStrategy extends CostBalancerStrategy // add segments that will be loaded to the cost cost += costCacheForLoadingSegments(server).computeCost(serverName, proposalSegment); - return cost; + if (server.getAvailableSize() <= 0) { + return Double.POSITIVE_INFINITY; + } + + return cost * (server.getMaxSize() / server.getAvailableSize()); } private ClusterCostCache costCacheForLoadingSegments(ServerHolder server)