You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2024/06/11 21:03:53 UTC
(hbase) branch branch-2.6 updated: HBASE-28652 Backport HBASE-21785 master reports open regions as RITs and also messes up rit age metric (#5979)
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.6 by this push:
new ba15d67a350 HBASE-28652 Backport HBASE-21785 master reports open regions as RITs and also messes up rit age metric (#5979)
ba15d67a350 is described below
commit ba15d67a350adb11ae1d4c44d214216406ae0b5a
Author: szucsvillo <81...@users.noreply.github.com>
AuthorDate: Tue Jun 11 23:03:48 2024 +0200
HBASE-28652 Backport HBASE-21785 master reports open regions as RITs and also messes up rit age metric (#5979)
Signed-off-by: Duo Zhang <zh...@apache.org>
Signed-off-by: Andrew Purtell <ap...@apache.org>
Co-authored-by: Sergey Shelukhin <se...@apache.org>
---
.../hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java | 4 ++--
.../apache/hadoop/hbase/master/assignment/AssignmentManager.java | 8 +++++++-
.../apache/hadoop/hbase/master/assignment/RegionStateNode.java | 6 +++++-
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java
index 5512e906b67..819445bd586 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java
@@ -117,8 +117,8 @@ public class MetricsAssignmentManagerSourceImpl extends BaseSourceImpl
}
@Override
- public void setRITOldestAge(final long ritCount) {
- ritOldestAgeGauge.set(ritCount);
+ public void setRITOldestAge(final long ritOldestAge) {
+ ritOldestAgeGauge.set(ritOldestAge);
}
@Override
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
index a46f220f6db..5e06e5a4820 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
@@ -1666,7 +1666,13 @@ public class AssignmentManager {
private void update(final Collection<RegionState> regions, final long currentTime) {
for (RegionState state : regions) {
totalRITs++;
- final long ritTime = currentTime - state.getStamp();
+ final long ritStartedMs = state.getStamp();
+ if (ritStartedMs == 0) {
+ // Don't output bogus values to metrics if they accidentally make it here.
+ LOG.warn("The RIT {} has no start time", state.getRegion());
+ continue;
+ }
+ final long ritTime = currentTime - ritStartedMs;
if (ritTime > ritThreshold) {
if (ritsOverThreshold == null) {
ritsOverThreshold = new HashMap<String, RegionState>();
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java
index 2c61d3d427b..91c0222facd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java
@@ -178,7 +178,11 @@ public class RegionStateNode implements Comparable<RegionStateNode> {
public long getLastUpdate() {
TransitRegionStateProcedure proc = this.procedure;
- return proc != null ? proc.getLastUpdate() : lastUpdate;
+ if (proc != null) {
+ long lastUpdate = proc.getLastUpdate();
+ return lastUpdate != 0 ? lastUpdate : proc.getSubmittedTime();
+ }
+ return lastUpdate;
}
public void setLastHost(final ServerName serverName) {