Skip to content

Commit 11eb00c

Browse files
authored
improve messages when resource utilization exceed (#18993)
1 parent 3790129 commit 11eb00c

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

pinot-controller/src/main/java/org/apache/pinot/controller/validation/RealtimeSegmentValidationManager.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public RealtimeSegmentValidationManager(ControllerConf config, PinotHelixResourc
7777
ValidationMetrics validationMetrics, ControllerMetrics controllerMetrics, StorageQuotaChecker quotaChecker,
7878
ResourceUtilizationManager resourceUtilizationManager) {
7979
super("RealtimeSegmentValidationManager", config.getRealtimeSegmentValidationFrequencyInSeconds(),
80-
config.getRealtimeSegmentValidationManagerInitialDelaySeconds(),
80+
config.getRealtimeSegmentValidationManagerInitialDelaySeconds(),
8181
config.getRealtimeSegmentValidationCronExpression(),
8282
pinotHelixResourceManager, leadControllerManager, controllerMetrics);
8383
_llcRealtimeSegmentManager = llcRealtimeSegmentManager;
@@ -174,7 +174,9 @@ boolean shouldEnsureConsuming(String tableNameWithType) {
174174
if (!isTablePaused || !pauseStatus.getReasonCode()
175175
.equals(PauseState.ReasonCode.RESOURCE_UTILIZATION_LIMIT_EXCEEDED)) {
176176
_llcRealtimeSegmentManager.pauseConsumption(tableNameWithType,
177-
PauseState.ReasonCode.RESOURCE_UTILIZATION_LIMIT_EXCEEDED, "Resource utilization limit exceeded.");
177+
PauseState.ReasonCode.RESOURCE_UTILIZATION_LIMIT_EXCEEDED,
178+
"Resource utilization limit exceeded. Check ResourceUtilizationManager log on controllers for detail "
179+
+ "reasons");
178180
}
179181
return false; // if resource utilization check failed, then skip subsequent checks
180182
} else if ((isResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.PASS) && isTablePaused

pinot-controller/src/main/java/org/apache/pinot/controller/validation/ResourceUtilizationManager.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,28 @@ public UtilizationChecker.CheckResult isResourceUtilizationWithinLimits(String t
5454
if (StringUtils.isEmpty(tableNameWithType)) {
5555
throw new IllegalArgumentException("Table name found to be null or empty while checking resource utilization.");
5656
}
57-
LOGGER.info("Checking resource utilization for table: {}", tableNameWithType);
5857
UtilizationChecker.CheckResult overallIsResourceUtilizationWithinLimits = UtilizationChecker.CheckResult.PASS;
5958
for (UtilizationChecker utilizationChecker : _utilizationCheckers) {
6059
UtilizationChecker.CheckResult isResourceUtilizationWithinLimits =
6160
utilizationChecker.isResourceUtilizationWithinLimits(tableNameWithType, purpose);
62-
LOGGER.info("For utilization checker: {}, isResourceUtilizationWithinLimits: {}, purpose: {}",
63-
utilizationChecker.getName(), isResourceUtilizationWithinLimits, purpose);
6461
if (isResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.FAIL) {
6562
// If any UtilizationChecker returns FAIL, we should mark the overall as FAIL. FAIL should always have
6663
// priority over other results
64+
LOGGER.error(
65+
"The utilization checker: {} failed on table {}, isResourceUtilizationWithinLimits: {}, purpose: {}",
66+
utilizationChecker.getName(), tableNameWithType, isResourceUtilizationWithinLimits, purpose);
6767
overallIsResourceUtilizationWithinLimits = UtilizationChecker.CheckResult.FAIL;
68-
} else if ((overallIsResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.PASS)
69-
&& (isResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.UNDETERMINED)) {
68+
} else if (isResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.UNDETERMINED) {
7069
// If we haven't already updated the overall to a value other than PASS, and we get an UNDETERMINED result,
7170
// update the overall to UNDETERMINED. Should not update to UNDETERMINED if we have set the overall to FAIL
72-
overallIsResourceUtilizationWithinLimits = UtilizationChecker.CheckResult.UNDETERMINED;
71+
if (overallIsResourceUtilizationWithinLimits == UtilizationChecker.CheckResult.PASS) {
72+
overallIsResourceUtilizationWithinLimits = UtilizationChecker.CheckResult.UNDETERMINED;
73+
}
74+
LOGGER.warn("The utilization checker: {} couldn't determine for table {}, purpose: {}",
75+
utilizationChecker.getName(), tableNameWithType, purpose);
76+
} else {
77+
LOGGER.info("For utilization checker: {} pass on table {}, purpose: {}", utilizationChecker.getName(),
78+
tableNameWithType, purpose);
7379
}
7480
}
7581
return overallIsResourceUtilizationWithinLimits;

0 commit comments

Comments
 (0)