You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by se...@apache.org on 2019/02/12 21:00:47 UTC

[hbase] branch master updated: HBASE-21785 master reports open regions as RITs and also messes up rit age metric

This is an automated email from the ASF dual-hosted git repository.

sershe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ef6bc4  HBASE-21785 master reports open regions as RITs and also messes up rit age metric
9ef6bc4 is described below

commit 9ef6bc4323c9be0e18f0cf9918a582e6b4a11853
Author: Sergey Shelukhin <se...@apache.org>
AuthorDate: Tue Feb 12 12:53:17 2019 -0800

    HBASE-21785 master reports open regions as RITs and also messes up rit age metric
    
    Signed-off-by: Duo Zhang <zh...@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 e8ab7d7..a702f70 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
@@ -82,8 +82,8 @@ public class MetricsAssignmentManagerSourceImpl
   }
 
   @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 c12f806..2d0c3be 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
@@ -1195,7 +1195,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 087d9bc..7dbdbee 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
@@ -169,7 +169,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) {