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
The following commit(s) were added to refs/heads/HBASE-25853 by this push:
new a618459 HBASE-26129 Backport HBASE-25481 "Add host and port attribute
when tracing rpc call at client side" to branch-2 (#3589)
a618459 is described below
commit a6184593c4ceff5f74beb2711ce770131b511559
Author: Tak Lon (Stephen) Wu <[email protected]>
AuthorDate: Tue Aug 17 09:24:10 2021 -0700
HBASE-26129 Backport HBASE-25481 "Add host and port attribute when tracing
rpc call at client side" to branch-2 (#3589)
6/17 commits of HBASE-22120, original commit
ae2c62ffaad5ba4c976b0a79c10a365edf2844fd
Co-authored-by: Duo Zhang <[email protected]>
Signed-off-by: Peter Somogyi <[email protected]>
---
.../org/apache/hadoop/hbase/ipc/AbstractRpcClient.java | 4 +++-
.../java/org/apache/hadoop/hbase/trace/TraceUtil.java | 4 ++++
.../org/apache/hadoop/hbase/ipc/AbstractTestIPC.java | 17 ++++++++++-------
3 files changed, 17 insertions(+), 8 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 b671095..878f9cf 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
@@ -397,7 +397,9 @@ public abstract class AbstractRpcClient<T extends
RpcConnection> implements RpcC
final RpcCallback<Message> callback) {
Span span = TraceUtil.createSpan("RpcClient.callMethod")
.setAttribute(TraceUtil.RPC_SERVICE_KEY, md.getService().getName())
- .setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName());
+ .setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName())
+ .setAttribute(TraceUtil.REMOTE_HOST_KEY, addr.getHostName())
+ .setAttribute(TraceUtil.REMOTE_PORT_KEY, addr.getPort());
try (Scope scope = span.makeCurrent()) {
final MetricsConnection.CallStats cs = MetricsConnection.newCallStats();
cs.setStartTime(EnvironmentEdgeManager.currentTime());
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 d0da071..8eb2399 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
@@ -54,6 +54,10 @@ public final class TraceUtil {
public static final AttributeKey<String> SERVER_NAME_KEY =
AttributeKey.stringKey("db.hbase.server.name");
+ public static final AttributeKey<String> REMOTE_HOST_KEY =
SemanticAttributes.NET_PEER_NAME;
+
+ public static final AttributeKey<Long> REMOTE_PORT_KEY =
SemanticAttributes.NET_PEER_PORT;
+
private TraceUtil() {
}
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 4aca764..ffecb09 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
@@ -455,11 +455,14 @@ public abstract class AbstractTestIPC {
return traceRule.getSpans().stream().filter(s ->
s.getName().equals(name)).findFirst().get();
}
- private void assertRpcAttribute(SpanData data, String methodName) {
+ private void assertRpcAttribute(SpanData data, String methodName,
InetSocketAddress addr) {
assertEquals(SERVICE.getDescriptorForType().getName(),
data.getAttributes().get(TraceUtil.RPC_SERVICE_KEY));
- assertEquals(methodName,
- data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
+ assertEquals(methodName,
data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
+ if (addr != null) {
+ assertEquals(addr.getHostName(),
data.getAttributes().get(TraceUtil.REMOTE_HOST_KEY));
+ assertEquals(addr.getPort(),
data.getAttributes().get(TraceUtil.REMOTE_PORT_KEY).intValue());
+ }
}
@Test
@@ -471,8 +474,8 @@ 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");
- assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause");
+ assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause",
rpcServer.getListenerAddress());
+ assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null);
assertSameTraceId();
for (SpanData data : traceRule.getSpans()) {
assertThat(
@@ -484,8 +487,8 @@ public abstract class AbstractTestIPC {
traceRule.clearSpans();
assertThrows(ServiceException.class,
() -> stub.error(null, EmptyRequestProto.getDefaultInstance()));
- assertRpcAttribute(waitSpan("RpcClient.callMethod"), "error");
- assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error");
+ assertRpcAttribute(waitSpan("RpcClient.callMethod"), "error",
rpcServer.getListenerAddress());
+ assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error", null);
assertSameTraceId();
for (SpanData data : traceRule.getSpans()) {
assertEquals(StatusCode.ERROR, data.getStatus().getStatusCode());