Skip to content

Commit 83a2738

Browse files
committed
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 ae2c62f Co-authored-by: Duo Zhang <zhangduo@apache.org> Signed-off-by: Peter Somogyi <psomogyi@apache.org>
1 parent 7ecf54f commit 83a2738

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,9 @@ private Call callMethod(final Descriptors.MethodDescriptor md, final HBaseRpcCon
397397
final RpcCallback<Message> callback) {
398398
Span span = TraceUtil.createSpan("RpcClient.callMethod")
399399
.setAttribute(TraceUtil.RPC_SERVICE_KEY, md.getService().getName())
400-
.setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName());
400+
.setAttribute(TraceUtil.RPC_METHOD_KEY, md.getName())
401+
.setAttribute(TraceUtil.REMOTE_HOST_KEY, addr.getHostName())
402+
.setAttribute(TraceUtil.REMOTE_PORT_KEY, addr.getPort());
401403
try (Scope scope = span.makeCurrent()) {
402404
final MetricsConnection.CallStats cs = MetricsConnection.newCallStats();
403405
cs.setStartTime(EnvironmentEdgeManager.currentTime());

hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ public final class TraceUtil {
5454
public static final AttributeKey<String> SERVER_NAME_KEY =
5555
AttributeKey.stringKey("db.hbase.server.name");
5656

57+
public static final AttributeKey<String> REMOTE_HOST_KEY = SemanticAttributes.NET_PEER_NAME;
58+
59+
public static final AttributeKey<Long> REMOTE_PORT_KEY = SemanticAttributes.NET_PEER_PORT;
60+
5761
private TraceUtil() {
5862
}
5963

hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -455,11 +455,14 @@ private SpanData waitSpan(String name) {
455455
return traceRule.getSpans().stream().filter(s -> s.getName().equals(name)).findFirst().get();
456456
}
457457

458-
private void assertRpcAttribute(SpanData data, String methodName) {
458+
private void assertRpcAttribute(SpanData data, String methodName, InetSocketAddress addr) {
459459
assertEquals(SERVICE.getDescriptorForType().getName(),
460460
data.getAttributes().get(TraceUtil.RPC_SERVICE_KEY));
461-
assertEquals(methodName,
462-
data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
461+
assertEquals(methodName, data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
462+
if (addr != null) {
463+
assertEquals(addr.getHostName(), data.getAttributes().get(TraceUtil.REMOTE_HOST_KEY));
464+
assertEquals(addr.getPort(), data.getAttributes().get(TraceUtil.REMOTE_PORT_KEY).intValue());
465+
}
463466
}
464467

465468
@Test
@@ -471,8 +474,8 @@ public void testTracing() throws IOException, ServiceException {
471474
rpcServer.start();
472475
BlockingInterface stub = newBlockingStub(client, rpcServer.getListenerAddress());
473476
stub.pause(null, PauseRequestProto.newBuilder().setMs(100).build());
474-
assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause");
475-
assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause");
477+
assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", rpcServer.getListenerAddress());
478+
assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null);
476479
assertSameTraceId();
477480
for (SpanData data : traceRule.getSpans()) {
478481
assertThat(
@@ -484,8 +487,8 @@ public void testTracing() throws IOException, ServiceException {
484487
traceRule.clearSpans();
485488
assertThrows(ServiceException.class,
486489
() -> stub.error(null, EmptyRequestProto.getDefaultInstance()));
487-
assertRpcAttribute(waitSpan("RpcClient.callMethod"), "error");
488-
assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error");
490+
assertRpcAttribute(waitSpan("RpcClient.callMethod"), "error", rpcServer.getListenerAddress());
491+
assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error", null);
489492
assertSameTraceId();
490493
for (SpanData data : traceRule.getSpans()) {
491494
assertEquals(StatusCode.ERROR, data.getStatus().getStatusCode());

0 commit comments

Comments
 (0)