You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2017/12/27 22:14:44 UTC

hbase git commit: HBASE-19647 Logging cleanups; emit regionname when RegionTooBusyException inside RetriesExhausted... make netty connect/disconnect TRACE-level; ADDENDUM

Repository: hbase
Updated Branches:
  refs/heads/branch-2 7dee1bcd3 -> e4ab29ada


HBASE-19647 Logging cleanups; emit regionname when RegionTooBusyException inside RetriesExhausted... make netty connect/disconnect TRACE-level; ADDENDUM


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e4ab29ad
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e4ab29ad
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e4ab29ad

Branch: refs/heads/branch-2
Commit: e4ab29ada2d8acccd5b6a4a87ccaf5fbba944ca2
Parents: 7dee1bc
Author: Michael Stack <st...@apache.org>
Authored: Wed Dec 27 14:14:07 2017 -0800
Committer: Michael Stack <st...@apache.org>
Committed: Wed Dec 27 14:14:37 2017 -0800

----------------------------------------------------------------------
 .../hadoop/hbase/RegionTooBusyException.java     | 11 +++++------
 .../RetriesExhaustedWithDetailsException.java    |  2 ++
 .../hadoop/hbase/regionserver/HRegion.java       | 19 ++++++++++---------
 .../hadoop/hbase/client/TestMetaCache.java       |  2 +-
 .../apache/hadoop/hbase/ipc/TestRpcMetrics.java  |  2 +-
 5 files changed, 19 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e4ab29ad/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTooBusyException.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTooBusyException.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTooBusyException.java
index 7b03b45..49431b6 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTooBusyException.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTooBusyException.java
@@ -24,21 +24,20 @@ import org.apache.yetus.audience.InterfaceAudience;
 /**
  * Thrown by a region server if it will block and wait to serve a request.
  * For example, the client wants to insert something to a region while the
- * region is compacting.
+ * region is compacting. Keep variance in the passed 'msg' low because its msg is used as a key
+ * over in {@link org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException}
+ * grouping failure types.
  */
 @InterfaceAudience.Public
 public class RegionTooBusyException extends IOException {
   private static final long serialVersionUID = 1728345723728342L;
 
-  /** default constructor */
-  public RegionTooBusyException() {
-    super();
-  }
-
   /**
    * Constructor
    * @param msg message
    */
+  // Be careful. Keep variance in the passed 'msg' low because its msg is used as a key over in
+  // RetriesExhaustedWithDetailsException grouping failure types.
   public RegionTooBusyException(final String msg) {
     super(msg);
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/e4ab29ad/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.java
index e7eda2a..0cce728 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.java
@@ -157,6 +157,8 @@ extends RetriesExhaustedException {
       if (t instanceof DoNotRetryIOException ||
           t instanceof RegionTooBusyException) {
         // If RegionTooBusyException, print message since it has Region name in it.
+        // RegionTooBusyException message was edited to remove variance. Has regionname, server,
+        // and why the exception; no longer has duration it waited on lock nor current memsize.
         name = t.getMessage();
       } else {
         name = t.getClass().getSimpleName();

http://git-wip-us.apache.org/repos/asf/hbase/blob/e4ab29ad/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index cde6874..ca1bfd3 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -4170,12 +4170,12 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
     if (this.memstoreDataSize.get() > this.blockingMemStoreSize) {
       blockedRequestsCount.increment();
       requestFlush();
-      throw new RegionTooBusyException("Over memstore limit, " +
-          "regionName=" + (this.getRegionInfo() == null ? "unknown" :
-          this.getRegionInfo().getRegionNameAsString()) +
-          ", server=" + (this.getRegionServerServices() == null ? "unknown" :
+      // Don't print current limit because it will vary too much. The message is used as a key
+      // over in RetriesExhaustedWithDetailsException processing.
+      throw new RegionTooBusyException("Over memstore limit; regionName=" +
+          (this.getRegionInfo() == null? "unknown": this.getRegionInfo().getRegionNameAsString()) +
+          ", server=" + (this.getRegionServerServices() == null ? "unknown":
           this.getRegionServerServices().getServerName()) +
-          ", memstoreSize=" + memstoreDataSize.get() +
           ", blockingMemStoreSize=" + blockingMemStoreSize);
     }
   }
@@ -8183,11 +8183,12 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       final long waitTime = Math.min(maxBusyWaitDuration,
           busyWaitDuration * Math.min(multiplier, maxBusyWaitMultiplier));
       if (!lock.tryLock(waitTime, TimeUnit.MILLISECONDS)) {
-        throw new RegionTooBusyException(
-            "failed to get a lock in " + waitTime + " ms. " +
-                "regionName=" + (this.getRegionInfo() == null ? "unknown" :
+        // Don't print millis. Message is used as a key over in
+        // RetriesExhaustedWithDetailsException processing.
+        throw new RegionTooBusyException("Failed to obtain lock; regionName=" +
+            (this.getRegionInfo() == null? "unknown":
                 this.getRegionInfo().getRegionNameAsString()) +
-                ", server=" + (this.getRegionServerServices() == null ? "unknown" :
+            ", server=" + (this.getRegionServerServices() == null? "unknown":
                 this.getRegionServerServices().getServerName()));
       }
     } catch (InterruptedException ie) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/e4ab29ad/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaCache.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaCache.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaCache.java
index b1fda41..ecdd685 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaCache.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaCache.java
@@ -187,7 +187,7 @@ public class TestMetaCache {
   public static List<Throwable> metaCachePreservingExceptions() {
     return new ArrayList<Throwable>() {{
       add(new RegionOpeningException(" "));
-      add(new RegionTooBusyException());
+      add(new RegionTooBusyException("Some old message"));
       add(new ThrottlingException(" "));
       add(new MultiActionResultTooLarge(" "));
       add(new RetryImmediatelyException(" "));

http://git-wip-us.apache.org/repos/asf/hbase/blob/e4ab29ad/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java
index a0769da..cfcfb21 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java
@@ -133,7 +133,7 @@ public class TestRpcMetrics {
     HELPER.assertCounter("exceptions", 1, serverSource);
 
     mrpc.exception(new RegionMovedException(ServerName.parseServerName("localhost:60020"), 100));
-    mrpc.exception(new RegionTooBusyException());
+    mrpc.exception(new RegionTooBusyException("Some region"));
     mrpc.exception(new OutOfOrderScannerNextException());
     mrpc.exception(new NotServingRegionException());
     HELPER.assertCounter("exceptions.RegionMovedException", 1, serverSource);