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 83a27389a025f4d6b9481f4b66a8e6799c84f8b0 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());
