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) {