You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cm...@apache.org on 2014/10/24 04:15:14 UTC

git commit: HDFS-7223. Tracing span description of IPC client is too long (iwasakims via cmccabe) (cherry picked from commit 5b56ac4c72d69d1b3d6feec9d96c9d62eb02d28c)

Repository: hadoop
Updated Branches:
  refs/heads/branch-2 c99d89f2c -> caa658a01


HDFS-7223. Tracing span description of IPC client is too long (iwasakims via cmccabe)
(cherry picked from commit 5b56ac4c72d69d1b3d6feec9d96c9d62eb02d28c)


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

Branch: refs/heads/branch-2
Commit: caa658a015e22938c345451bd4de46b0e0f08507
Parents: c99d89f
Author: Colin Patrick Mccabe <cm...@cloudera.com>
Authored: Thu Oct 23 19:14:00 2014 -0700
Committer: Colin Patrick Mccabe <cm...@cloudera.com>
Committed: Thu Oct 23 19:15:08 2014 -0700

----------------------------------------------------------------------
 .../apache/hadoop/ipc/ProtobufRpcEngine.java    |  4 +---
 .../org/apache/hadoop/ipc/RpcClientUtil.java    | 21 ++++++++++++++++++++
 .../apache/hadoop/ipc/WritableRpcEngine.java    |  4 +---
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt     |  3 +++
 .../org/apache/hadoop/tracing/TestTracing.java  | 10 +++++-----
 5 files changed, 31 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/caa658a0/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java
index f8c35d9..d8e22c7 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java
@@ -212,9 +212,7 @@ public class ProtobufRpcEngine implements RpcEngine {
       // guard it in the if statement to make sure there isn't
       // any extra string manipulation.
       if (Trace.isTracing()) {
-        traceScope = Trace.startSpan(
-            method.getDeclaringClass().getCanonicalName() +
-            "." + method.getName());
+        traceScope = Trace.startSpan(RpcClientUtil.methodToTraceString(method));
       }
 
       RequestHeaderProto rpcRequestHeader = constructRpcRequestHeader(method);

http://git-wip-us.apache.org/repos/asf/hadoop/blob/caa658a0/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RpcClientUtil.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RpcClientUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RpcClientUtil.java
index 2623f9e..d9bd71b 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RpcClientUtil.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RpcClientUtil.java
@@ -189,4 +189,25 @@ public class RpcClientUtil {
         .getProtocolMetaInfoProxy(inv.getConnectionId(), conf,
             NetUtils.getDefaultSocketFactory(conf)).getProxy();
   }
+
+  /**
+   * Convert an RPC method to a string.
+   * The format we want is 'MethodOuterClassShortName#methodName'.
+   *
+   * For example, if the method is:
+   *   org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.
+   *     ClientNamenodeProtocol.BlockingInterface.getServerDefaults
+   *
+   * the format we want is:
+   *   ClientNamenodeProtocol#getServerDefaults
+   */
+  public static String methodToTraceString(Method method) {
+    Class<?> clazz = method.getDeclaringClass();
+    while (true) {
+      Class<?> next = clazz.getEnclosingClass();
+      if (next == null || next.getEnclosingClass() == null) break;
+      clazz = next;
+    }
+    return clazz.getSimpleName() + "#" + method.getName();
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/caa658a0/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/WritableRpcEngine.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/WritableRpcEngine.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/WritableRpcEngine.java
index 037f006..869a52a 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/WritableRpcEngine.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/WritableRpcEngine.java
@@ -235,9 +235,7 @@ public class WritableRpcEngine implements RpcEngine {
       }
       TraceScope traceScope = null;
       if (Trace.isTracing()) {
-        traceScope = Trace.startSpan(
-            method.getDeclaringClass().getCanonicalName() +
-            "." + method.getName());
+        traceScope = Trace.startSpan(RpcClientUtil.methodToTraceString(method));
       }
       ObjectWritable value;
       try {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/caa658a0/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 0c6c41f..88e9111 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -44,6 +44,9 @@ Release 2.7.0 - UNRELEASED
     HDFS-7257. Add the time of last HA state transition to NN's /jmx page.
     (Charles Lamb via wheat9)
 
+    HDFS-7223. Tracing span description of IPC client is too long (iwasakims
+    via cmccabe)
+
   OPTIMIZATIONS
 
   BUG FIXES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/caa658a0/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tracing/TestTracing.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tracing/TestTracing.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tracing/TestTracing.java
index 5c24500..0f96c6f 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tracing/TestTracing.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tracing/TestTracing.java
@@ -83,15 +83,15 @@ public class TestTracing {
     String[] expectedSpanNames = {
       "testWriteTraceHooks",
       "org.apache.hadoop.hdfs.protocol.ClientProtocol.create",
-      "org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.ClientNamenodeProtocol.BlockingInterface.create",
+      "ClientNamenodeProtocol#create",
       "org.apache.hadoop.hdfs.protocol.ClientProtocol.fsync",
-      "org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.ClientNamenodeProtocol.BlockingInterface.fsync",
+      "ClientNamenodeProtocol#fsync",
       "org.apache.hadoop.hdfs.protocol.ClientProtocol.complete",
-      "org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.ClientNamenodeProtocol.BlockingInterface.complete",
+      "ClientNamenodeProtocol#complete",
       "DFSOutputStream",
       "OpWriteBlockProto",
       "org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock",
-      "org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.ClientNamenodeProtocol.BlockingInterface.addBlock"
+      "ClientNamenodeProtocol#addBlock"
     };
     assertSpanNamesFound(expectedSpanNames);
 
@@ -162,7 +162,7 @@ public class TestTracing {
     String[] expectedSpanNames = {
       "testReadTraceHooks",
       "org.apache.hadoop.hdfs.protocol.ClientProtocol.getBlockLocations",
-      "org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.ClientNamenodeProtocol.BlockingInterface.getBlockLocations",
+      "ClientNamenodeProtocol#getBlockLocations",
       "OpReadBlockProto"
     };
     assertSpanNamesFound(expectedSpanNames);