J-HowHuang commented on code in PR #15175: URL: https://github.com/apache/pinot/pull/15175#discussion_r1999798954
########## pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/DefaultRebalancePreChecker.java: ########## @@ -184,4 +209,85 @@ private RebalancePreCheckerResult checkIsMinimizeDataMovement(String rebalanceJo return RebalancePreCheckerResult.error("Got exception when fetching instance assignment, check manually"); } } + + private RebalancePreCheckerResult checkDiskUtilization(Map<String, Map<String, String>> currentAssignment, + Map<String, Map<String, String>> targetAssignment, + TableSizeReader.TableSubTypeSizeDetails tableSubTypeSizeDetails, double threshold, boolean worstCase) { + boolean isDiskUtilSafe = true; + StringBuilder message = new StringBuilder("UNSAFE. Servers with unsafe disk util footprint: "); + String sep = ""; + Map<String, Set<String>> existingServersToSegmentMap = new HashMap<>(); + Map<String, Set<String>> newServersToSegmentMap = new HashMap<>(); + + for (Map.Entry<String, Map<String, String>> entrySet : currentAssignment.entrySet()) { + for (String instanceName : entrySet.getValue().keySet()) { + existingServersToSegmentMap.computeIfAbsent(instanceName, k -> new HashSet<>()).add(entrySet.getKey()); + } + } + + for (Map.Entry<String, Map<String, String>> entrySet : targetAssignment.entrySet()) { + for (String instanceName : entrySet.getValue().keySet()) { + newServersToSegmentMap.computeIfAbsent(instanceName, k -> new HashSet<>()).add(entrySet.getKey()); + } + } + + long avgSegmentSize = getAverageSegmentSize(tableSubTypeSizeDetails, currentAssignment); + + for (Map.Entry<String, Set<String>> entry : newServersToSegmentMap.entrySet()) { + String server = entry.getKey(); + DiskUsageInfo diskUsage = getDiskUsageInfoOfInstance(server); + + if (diskUsage.getTotalSpaceBytes() < 0) { + return RebalancePreCheckerResult.warn( + "Disk usage info not enabled. Try later or set controller.resource.utilization.checker.initial.delay to a" Review Comment: Should be "Disk usage hasn't been updated. Try later..." -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org