hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ndimi...@apache.org
Subject [hbase] branch master updated: HBASE-23333 Include Call.toShortString() in sendCall exceptions
Date Fri, 03 Jan 2020 19:09:05 GMT
This is an automated email from the ASF dual-hosted git repository.

ndimiduk 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 af3bb1f  HBASE-23333 Include Call.toShortString() in sendCall exceptions
af3bb1f is described below

commit af3bb1fecae4b126e4bbd9c3b6526ca935c95101
Author: Nick Dimiduk <ndimiduk@apache.org>
AuthorDate: Fri Nov 22 16:11:37 2019 -0800

    HBASE-23333 Include Call.toShortString() in sendCall exceptions
---
 .../hadoop/hbase/ipc/BlockingRpcConnection.java    | 10 +++---
 .../java/org/apache/hadoop/hbase/ipc/Call.java     | 38 +++++++++++++++-------
 .../java/org/apache/hadoop/hbase/ipc/IPCUtil.java  |  2 +-
 .../org/apache/hadoop/hbase/ipc/RpcConnection.java |  2 +-
 .../apache/hadoop/hbase/util/TestFutureUtils.java  |  2 ++
 5 files changed, 34 insertions(+), 20 deletions(-)

diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java
index 6df2a39..c5b1e57 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java
@@ -149,7 +149,7 @@ class BlockingRpcConnection extends RpcConnection implements Runnable
{
 
     public void sendCall(final Call call) throws IOException {
       if (callsToWrite.size() >= maxQueueSize) {
-        throw new IOException("Can't add the call " + call.id
+        throw new IOException("Can't add " + call.toShortString()
             + " to the write queue. callsToWrite.size()=" + callsToWrite.size());
       }
       callsToWrite.offer(call);
@@ -161,7 +161,7 @@ class BlockingRpcConnection extends RpcConnection implements Runnable
{
       // By removing the call from the expected call list, we make the list smaller, but
       // it means as well that we don't know how many calls we cancelled.
       calls.remove(call.id);
-      call.setException(new CallCancelledException("Call id=" + call.id + ", waitTime="
+      call.setException(new CallCancelledException(call.toShortString() + ", waitTime="
           + (EnvironmentEdgeManager.currentTime() - call.getStartTime()) + ", rpcTimeout="
           + call.timeout));
     }
@@ -193,9 +193,7 @@ class BlockingRpcConnection extends RpcConnection implements Runnable
{
           } catch (IOException e) {
             // exception here means the call has not been added to the pendingCalls yet,
so we need
             // to fail it by our own.
-            if (LOG.isDebugEnabled()) {
-              LOG.debug("call write error for call #" + call.id, e);
-            }
+            LOG.debug("call write error for {}", call.toShortString());
             call.setException(e);
             closeConn(e);
           }
@@ -628,7 +626,7 @@ class BlockingRpcConnection extends RpcConnection implements Runnable
{
         call.callStats.setRequestSizeBytes(write(this.out, requestHeader, call.param, cellBlock));
       } catch (Throwable t) {
         if(LOG.isTraceEnabled()) {
-          LOG.trace("Error while writing call, call_id:" + call.id, t);
+          LOG.trace("Error while writing {}", call.toShortString());
         }
         IOException e = IPCUtil.toIOE(t);
         closeConn(e);
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/Call.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/Call.java
index e39aba0..ccd92cc 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/Call.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/Call.java
@@ -17,21 +17,21 @@
  */
 package org.apache.hadoop.hbase.ipc;
 
-import org.apache.hbase.thirdparty.io.netty.util.Timeout;
-
-import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors;
-import org.apache.hbase.thirdparty.com.google.protobuf.Message;
-import org.apache.hbase.thirdparty.com.google.protobuf.RpcCallback;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-
 import java.io.IOException;
-
+import java.util.Optional;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 import org.apache.hadoop.hbase.CellScanner;
-import org.apache.yetus.audience.InterfaceAudience;
 import org.apache.hadoop.hbase.client.MetricsConnection;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.htrace.core.Span;
 import org.apache.htrace.core.Tracer;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors;
+import org.apache.hbase.thirdparty.com.google.protobuf.Message;
+import org.apache.hbase.thirdparty.com.google.protobuf.RpcCallback;
+import org.apache.hbase.thirdparty.io.netty.util.Timeout;
+import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
 
 /** A call waiting for a value. */
 @InterfaceAudience.Private
@@ -56,7 +56,7 @@ class Call {
   final int timeout; // timeout in millisecond for this call; 0 means infinite.
   final int priority;
   final MetricsConnection.CallStats callStats;
-  final RpcCallback<Call> callback;
+  private final RpcCallback<Call> callback;
   final Span span;
   Timeout timeoutTask;
 
@@ -76,10 +76,24 @@ class Call {
     this.span = Tracer.getCurrentSpan();
   }
 
+  /**
+   * Builds a simplified {@link #toString()} that includes just the id and method name.
+   */
+  public String toShortString() {
+    return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+      .append("id", id)
+      .append("methodName", md.getName())
+      .toString();
+  }
+
   @Override
   public String toString() {
-    return "callId: " + this.id + " methodName: " + this.md.getName() + " param {"
-        + (this.param != null ? ProtobufUtil.getShortTextFormat(this.param) : "") + "}";
+    return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+      .appendSuper(toShortString())
+      .append("param", Optional.ofNullable(param)
+        .map(ProtobufUtil::getShortTextFormat)
+        .orElse(""))
+      .toString();
   }
 
   /**
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/IPCUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/IPCUtil.java
index e9981b3..8e92640 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/IPCUtil.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/IPCUtil.java
@@ -230,7 +230,7 @@ class IPCUtil {
   }
 
   static void setCancelled(Call call) {
-    call.setException(new CallCancelledException("Call id=" + call.id + ", waitTime="
+    call.setException(new CallCancelledException(call.toShortString() + ", waitTime="
         + (EnvironmentEdgeManager.currentTime() - call.getStartTime()) + ", rpcTimeout="
         + call.timeout));
   }
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcConnection.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcConnection.java
index a935bb4..1fffebb 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcConnection.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcConnection.java
@@ -196,7 +196,7 @@ abstract class RpcConnection {
 
         @Override
         public void run(Timeout timeout) throws Exception {
-          call.setTimeout(new CallTimeoutException("Call id=" + call.id + ", waitTime="
+          call.setTimeout(new CallTimeoutException(call.toShortString() + ", waitTime="
               + (EnvironmentEdgeManager.currentTime() - call.getStartTime()) + ", rpcTimeout="
               + call.timeout));
           callTimeout(call);
diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestFutureUtils.java
b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestFutureUtils.java
index 5245f93..d560b24 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestFutureUtils.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestFutureUtils.java
@@ -80,6 +80,8 @@ public class TestFutureUtils {
         startsWith("org.apache.hadoop.hbase.util.TestFutureUtils.testRecordStackTrace"));
       assertTrue(Stream.of(elements)
         .anyMatch(element -> element.toString().contains("--------Future.get--------")));
+    } catch (Throwable t) {
+      throw new AssertionError("Caught unexpected Throwable", t);
     }
   }
 }


Mime
View raw message