[hbase] 09/18: HBASE-26132 Backport HBASE-25535 "Set span kind to CLIENT in AbstractRpcClient" to branch-2 (#3607)

2021-09-01 Thread taklwu
This is an automated email from the ASF dual-hosted git repository.

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

commit 8b7450f5d8480e0243978b279eaaba5fb1c4994b
Author: Tak Lon (Stephen) Wu 
AuthorDate: Thu Aug 19 20:12:37 2021 -0700

HBASE-26132 Backport HBASE-25535 "Set span kind to CLIENT in 
AbstractRpcClient" to branch-2 (#3607)

9/17 commits of HBASE-22120, original commit 
bb8c4967f8ce2c89ebaf1ddc5d8a1bf55f1e20d3

Co-authored-by: Duo Zhang 

Signed-off-by: Duo Zhang 
---
 .../apache/hadoop/hbase/ipc/AbstractRpcClient.java |  2 +-
 .../org/apache/hadoop/hbase/trace/TraceUtil.java   |  7 +++
 .../apache/hadoop/hbase/ipc/AbstractTestIPC.java   | 23 +-
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
index fa7dfb1..bb7f4af 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
@@ -395,7 +395,7 @@ public abstract class AbstractRpcClient implements RpcC
   private Call callMethod(final Descriptors.MethodDescriptor md, final 
HBaseRpcController hrc,
 final Message param, Message returnType, final User ticket, final Address 
addr,
 final RpcCallback callback) {
-Span span = TraceUtil.createSpan("RpcClient.callMethod")
+Span span = TraceUtil.createClientSpan("RpcClient.callMethod")
   .setAttribute(TraceUtil.RPC_SERVICE_KEY, md.getService().getName())
   .setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName())
   .setAttribute(TraceUtil.REMOTE_HOST_KEY, addr.getHostName())
diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
index 886a4a9..2a6b6b6 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
@@ -106,6 +106,13 @@ public final class TraceUtil {
   }
 
   /**
+   * Create a span with {@link Kind#CLIENT}.
+   */
+  public static Span createClientSpan(String name) {
+return createSpan(name, Kind.CLIENT);
+  }
+
+  /**
* Trace an asynchronous operation for a table.
*/
   public static  CompletableFuture 
tracedFuture(Supplier> action,
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
index ffecb09..c4951b2 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
@@ -34,6 +34,7 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.internal.verification.VerificationModeFactory.times;
 
+import io.opentelemetry.api.trace.Span.Kind;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
 import io.opentelemetry.sdk.trace.data.SpanData;
@@ -455,7 +456,8 @@ public abstract class AbstractTestIPC {
 return traceRule.getSpans().stream().filter(s -> 
s.getName().equals(name)).findFirst().get();
   }
 
-  private void assertRpcAttribute(SpanData data, String methodName, 
InetSocketAddress addr) {
+  private void assertRpcAttribute(SpanData data, String methodName, 
InetSocketAddress addr,
+Kind kind) {
 assertEquals(SERVICE.getDescriptorForType().getName(),
   data.getAttributes().get(TraceUtil.RPC_SERVICE_KEY));
 assertEquals(methodName, 
data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
@@ -463,6 +465,13 @@ public abstract class AbstractTestIPC {
   assertEquals(addr.getHostName(), 
data.getAttributes().get(TraceUtil.REMOTE_HOST_KEY));
   assertEquals(addr.getPort(), 
data.getAttributes().get(TraceUtil.REMOTE_PORT_KEY).intValue());
 }
+assertEquals(kind, data.getKind());
+  }
+
+  private void assertRemoteSpan() {
+SpanData data = waitSpan("RpcServer.process");
+assertTrue(data.getParentSpanContext().isRemote());
+assertEquals(Kind.SERVER, data.getKind());
   }
 
   @Test
@@ -474,8 +483,10 @@ public abstract class AbstractTestIPC {
   rpcServer.start();
   BlockingInterface stub = newBlockingStub(client, 
rpcServer.getListenerAddress());
   stub.pause(null, PauseRequestProto.newBuilder().setMs(100).build());
-  assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", 
rpcServer.getListenerAddress());
-  assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null);
+  assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", 
rpcServer.getListenerAddress(),
+Kind.CLIENT);
+  

[hbase] 09/18: HBASE-26132 Backport HBASE-25535 "Set span kind to CLIENT in AbstractRpcClient" to branch-2 (#3607)

2021-08-27 Thread taklwu
This is an automated email from the ASF dual-hosted git repository.

taklwu pushed a commit to branch HBASE-25853
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 2e2cd4c744e91689b1523ac64fdf345f7258002f
Author: Tak Lon (Stephen) Wu 
AuthorDate: Thu Aug 19 20:12:37 2021 -0700

HBASE-26132 Backport HBASE-25535 "Set span kind to CLIENT in 
AbstractRpcClient" to branch-2 (#3607)

9/17 commits of HBASE-22120, original commit 
bb8c4967f8ce2c89ebaf1ddc5d8a1bf55f1e20d3

Co-authored-by: Duo Zhang 

Signed-off-by: Duo Zhang 
---
 .../apache/hadoop/hbase/ipc/AbstractRpcClient.java |  2 +-
 .../org/apache/hadoop/hbase/trace/TraceUtil.java   |  7 +++
 .../apache/hadoop/hbase/ipc/AbstractTestIPC.java   | 23 +-
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
index fa7dfb1..bb7f4af 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java
@@ -395,7 +395,7 @@ public abstract class AbstractRpcClient implements RpcC
   private Call callMethod(final Descriptors.MethodDescriptor md, final 
HBaseRpcController hrc,
 final Message param, Message returnType, final User ticket, final Address 
addr,
 final RpcCallback callback) {
-Span span = TraceUtil.createSpan("RpcClient.callMethod")
+Span span = TraceUtil.createClientSpan("RpcClient.callMethod")
   .setAttribute(TraceUtil.RPC_SERVICE_KEY, md.getService().getName())
   .setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName())
   .setAttribute(TraceUtil.REMOTE_HOST_KEY, addr.getHostName())
diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
index 886a4a9..2a6b6b6 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
@@ -106,6 +106,13 @@ public final class TraceUtil {
   }
 
   /**
+   * Create a span with {@link Kind#CLIENT}.
+   */
+  public static Span createClientSpan(String name) {
+return createSpan(name, Kind.CLIENT);
+  }
+
+  /**
* Trace an asynchronous operation for a table.
*/
   public static  CompletableFuture 
tracedFuture(Supplier> action,
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
index ffecb09..c4951b2 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
@@ -34,6 +34,7 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.internal.verification.VerificationModeFactory.times;
 
+import io.opentelemetry.api.trace.Span.Kind;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
 import io.opentelemetry.sdk.trace.data.SpanData;
@@ -455,7 +456,8 @@ public abstract class AbstractTestIPC {
 return traceRule.getSpans().stream().filter(s -> 
s.getName().equals(name)).findFirst().get();
   }
 
-  private void assertRpcAttribute(SpanData data, String methodName, 
InetSocketAddress addr) {
+  private void assertRpcAttribute(SpanData data, String methodName, 
InetSocketAddress addr,
+Kind kind) {
 assertEquals(SERVICE.getDescriptorForType().getName(),
   data.getAttributes().get(TraceUtil.RPC_SERVICE_KEY));
 assertEquals(methodName, 
data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
@@ -463,6 +465,13 @@ public abstract class AbstractTestIPC {
   assertEquals(addr.getHostName(), 
data.getAttributes().get(TraceUtil.REMOTE_HOST_KEY));
   assertEquals(addr.getPort(), 
data.getAttributes().get(TraceUtil.REMOTE_PORT_KEY).intValue());
 }
+assertEquals(kind, data.getKind());
+  }
+
+  private void assertRemoteSpan() {
+SpanData data = waitSpan("RpcServer.process");
+assertTrue(data.getParentSpanContext().isRemote());
+assertEquals(Kind.SERVER, data.getKind());
   }
 
   @Test
@@ -474,8 +483,10 @@ public abstract class AbstractTestIPC {
   rpcServer.start();
   BlockingInterface stub = newBlockingStub(client, 
rpcServer.getListenerAddress());
   stub.pause(null, PauseRequestProto.newBuilder().setMs(100).build());
-  assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", 
rpcServer.getListenerAddress());
-  assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null);
+  assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", 
rpcServer.getListenerAddress(),
+Kind.CLIENT);
+