You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by sn...@apache.org on 2021/11/17 00:58:00 UTC
[pinot] branch master updated: Fix merge delay metric when there is empty bucket (#7761)
This is an automated email from the ASF dual-hosted git repository.
snlee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 09bb91c Fix merge delay metric when there is empty bucket (#7761)
09bb91c is described below
commit 09bb91cecc8cff459a9d7814a7fe61aa67f2a393
Author: Seunghyun Lee <sn...@linkedin.com>
AuthorDate: Tue Nov 16 16:57:44 2021 -0800
Fix merge delay metric when there is empty bucket (#7761)
when we have the empty buckets (no more data push
for the table). However, we still have some edge
cases not covered. We found the issue where the
table has some empty buckets and new fresh data
that is not eligible for merge due to buffer time.
In this case, we still fall back to the original
algorithm and report the wrong delay. This PR
addresses such case.
---
.../plugin/minion/tasks/mergerollup/MergeRollupTaskGenerator.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskGenerator.java b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskGenerator.java
index 3b59a6f..ece07be 100644
--- a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskGenerator.java
+++ b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskGenerator.java
@@ -254,7 +254,11 @@ public class MergeRollupTaskGenerator implements PinotTaskGenerator {
// but the metrics are not available until the controller schedules a valid task
long maxEndTimeMs = Long.MIN_VALUE;
for (SegmentZKMetadata preSelectedSegment : preSelectedSegments) {
- maxEndTimeMs = Math.max(maxEndTimeMs, preSelectedSegment.getEndTimeMs());
+ long currentEndTimeMs = preSelectedSegment.getEndTimeMs();
+ // Compute maxEndTimeMs among segments that are valid for merge
+ if (currentEndTimeMs < System.currentTimeMillis() - bufferMs) {
+ maxEndTimeMs = Math.max(maxEndTimeMs, currentEndTimeMs);
+ }
}
createOrUpdateDelayMetrics(offlineTableName, mergeLevel, null, watermarkMs, maxEndTimeMs,
bufferMs, bucketMs);
@@ -548,7 +552,7 @@ public class MergeRollupTaskGenerator implements PinotTaskGenerator {
private long getMergeRollupTaskDelayInNumTimeBuckets(long watermarkMs, long maxEndTimeMsOfCurrentLevel,
long bufferTimeMs, long bucketTimeMs) {
- if (watermarkMs == -1) {
+ if (watermarkMs == -1 || maxEndTimeMsOfCurrentLevel == Long.MIN_VALUE) {
return 0;
}
return (Math.min(System.currentTimeMillis() - bufferTimeMs, maxEndTimeMsOfCurrentLevel) - watermarkMs)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org