You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vj...@apache.org on 2021/01/20 12:52:44 UTC

[hbase] branch branch-1 updated: HBASE-25329 Dump ritsOverThreshold in logs (#2762) (#2761)

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

vjasani pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-1 by this push:
     new a819012  HBASE-25329 Dump ritsOverThreshold in logs (#2762) (#2761)
a819012 is described below

commit a8190124b604dda5c5fc7d7e536c2e311cc2aae5
Author: caroliney14 <ca...@berkeley.edu>
AuthorDate: Wed Jan 20 04:51:52 2021 -0800

    HBASE-25329 Dump ritsOverThreshold in logs (#2762) (#2761)
    
    Signed-off-by: Bharath Vissapragada <bh...@apache.org>
    Signed-off-by: Viraj Jasani <vj...@apache.org>
---
 .../hbase/master/MetricsAssignmentManagerSource.java       |  2 +-
 .../org/apache/hadoop/hbase/master/AssignmentManager.java  | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSource.java
index 08b4ac5..9473b26 100644
--- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSource.java
+++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSource.java
@@ -40,7 +40,7 @@ public interface MetricsAssignmentManagerSource extends BaseSource {
   /**
    * Description
    */
-  String METRICS_DESCRIPTION = "Metrics about HBase master assingment manager.";
+  String METRICS_DESCRIPTION = "Metrics about HBase master assignment manager.";
 
   String RIT_COUNT_NAME = "ritCount";
   String RIT_COUNT_OVER_THRESHOLD_NAME = "ritCountOverThreshold";
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
index 4e25634..2b8c521 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
@@ -3538,6 +3538,7 @@ public class AssignmentManager extends ZooKeeperListener {
     int totalRITs = 0;
     int totalRITsOverThreshold = 0;
     long oldestRITTime = 0;
+    Map<String, RegionState> ritsOverThreshold = null;
     int ritThreshold = this.server.getConfiguration().
       getInt(HConstants.METRICS_RIT_STUCK_WARNING_THRESHOLD, 60000);
     for (RegionState state: regionStates.getRegionsInTransition()) {
@@ -3545,11 +3546,24 @@ public class AssignmentManager extends ZooKeeperListener {
       long ritTime = currentTime - state.getStamp();
       if (ritTime > ritThreshold) { // more than the threshold
         totalRITsOverThreshold++;
+        if (ritsOverThreshold == null) {
+          ritsOverThreshold = new HashMap<>();
+        }
+        ritsOverThreshold.put(state.getRegion().getEncodedName(), state);
       }
       if (oldestRITTime < ritTime) {
         oldestRITTime = ritTime;
       }
     }
+    if (LOG.isDebugEnabled() && ritsOverThreshold != null && !ritsOverThreshold.isEmpty()) {
+      StringBuilder sb = new StringBuilder();
+      for (Map.Entry<String, RegionState> rit: ritsOverThreshold.entrySet()) {
+        sb.append(rit.getKey()).append(":")
+          .append(rit.getValue().getState().name()).append("\n");
+      }
+      sb.delete(sb.length()-1, sb.length());
+      LOG.debug("RITs over threshold: " + sb.toString());
+    }
     if (this.metricsAssignmentManager != null) {
       this.metricsAssignmentManager.updateRITOldestAge(oldestRITTime);
       this.metricsAssignmentManager.updateRITCount(totalRITs);