From 0df25ac344fbae17e57dad611803b8ddf5164558 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Fri, 1 Jan 2021 22:55:03 +0800 Subject: [PATCH 1/2] HBASE-26128 Backport HBASE-25454 "Add trace support for connection registry" to branch-2 5/17 commits of HBASE-22120, original commit dcb78bd4bda4a4ae13d863df8aec266031e5bc93 and merged conflicts after rebasing on HBASE-26150 with commit 63d4970de451bf234f2ddbda949995b1420e525b --- .../AbstractRpcBasedConnectionRegistry.java | 52 ++++++++++++------- .../hbase/client/ZKConnectionRegistry.java | 36 +++++++------ 2 files changed, 53 insertions(+), 35 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java index 6a2919e8fbfe..687f263e2e61 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java @@ -17,6 +17,8 @@ */ package org.apache.hadoop.hbase.client; +import static org.apache.hadoop.hbase.trace.TraceUtil.trace; +import static org.apache.hadoop.hbase.trace.TraceUtil.tracedFuture; import static org.apache.hadoop.hbase.util.FutureUtils.addListener; import com.google.errorprone.annotations.RestrictedApi; @@ -235,38 +237,48 @@ private static RegionLocations transformMetaRegionLocations(GetMetaRegionLocatio @Override public CompletableFuture getMetaRegionLocations() { - return this - . call((c, s, d) -> s.getMetaRegionLocations(c, - GetMetaRegionLocationsRequest.getDefaultInstance(), d), r -> r.getMetaLocationsCount() != 0, + return tracedFuture( + () -> this + . call( + (c, s, d) -> s.getMetaRegionLocations(c, + GetMetaRegionLocationsRequest.getDefaultInstance(), d), + r -> r.getMetaLocationsCount() != 0, "getMetaLocationsCount") - .thenApply(AbstractRpcBasedConnectionRegistry::transformMetaRegionLocations); + .thenApply(AbstractRpcBasedConnectionRegistry::transformMetaRegionLocations), + getClass().getSimpleName() + ".getMetaRegionLocations"); } @Override public CompletableFuture getClusterId() { - return this - . call( - (c, s, d) -> s.getClusterId(c, GetClusterIdRequest.getDefaultInstance(), d), - GetClusterIdResponse::hasClusterId, "getClusterId()") - .thenApply(GetClusterIdResponse::getClusterId); + return tracedFuture( + () -> this + . call( + (c, s, d) -> s.getClusterId(c, GetClusterIdRequest.getDefaultInstance(), d), + GetClusterIdResponse::hasClusterId, "getClusterId()") + .thenApply(GetClusterIdResponse::getClusterId), + getClass().getSimpleName() + ".getClusterId"); } @Override public CompletableFuture getActiveMaster() { - return this - . call( - (c, s, d) -> s.getActiveMaster(c, GetActiveMasterRequest.getDefaultInstance(), d), - GetActiveMasterResponse::hasServerName, "getActiveMaster()") - .thenApply(resp -> ProtobufUtil.toServerName(resp.getServerName())); + return tracedFuture( + () -> this + .call( + (c, s, d) -> s.getActiveMaster(c, GetActiveMasterRequest.getDefaultInstance(), d), + GetActiveMasterResponse::hasServerName, "getActiveMaster()") + .thenApply(resp -> ProtobufUtil.toServerName(resp.getServerName())) + , getClass().getSimpleName() + ".getActiveMaster"); } @Override public void close() { - if (registryEndpointRefresher != null) { - registryEndpointRefresher.stop(); - } - if (rpcClient != null) { - rpcClient.close(); - } + trace(() -> { + if (registryEndpointRefresher != null) { + registryEndpointRefresher.stop(); + } + if (rpcClient != null) { + rpcClient.close(); + } + }, getClass().getSimpleName() + ".close"); } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java index 35107cab2ba7..6e94afe00a79 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java @@ -22,6 +22,7 @@ import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForDefaultReplica; import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForReplica; import static org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.lengthOfPBMagic; +import static org.apache.hadoop.hbase.trace.TraceUtil.tracedFuture; import static org.apache.hadoop.hbase.util.FutureUtils.addListener; import static org.apache.hadoop.hbase.zookeeper.ZKMetadata.removeMetaData; @@ -99,7 +100,9 @@ private static String getClusterId(byte[] data) throws DeserializationException @Override public CompletableFuture getClusterId() { - return getAndConvert(znodePaths.clusterIdZNode, ZKConnectionRegistry::getClusterId); + return tracedFuture( + () -> getAndConvert(znodePaths.clusterIdZNode, ZKConnectionRegistry::getClusterId), + "ZKConnectionRegistry.getClusterId"); } ReadOnlyZKClient getZKClient() { @@ -204,19 +207,20 @@ private void getMetaRegionLocation(CompletableFuture future, @Override public CompletableFuture getMetaRegionLocations() { - CompletableFuture future = new CompletableFuture<>(); - addListener( - zk.list(znodePaths.baseZNode) - .thenApply(children -> children.stream() + return tracedFuture(() -> { + CompletableFuture future = new CompletableFuture<>(); + addListener( + zk.list(znodePaths.baseZNode).thenApply(children -> children.stream() .filter(c -> this.znodePaths.isMetaZNodePrefix(c)).collect(Collectors.toList())), - (metaReplicaZNodes, error) -> { - if (error != null) { - future.completeExceptionally(error); - return; - } - getMetaRegionLocation(future, metaReplicaZNodes); - }); - return future; + (metaReplicaZNodes, error) -> { + if (error != null) { + future.completeExceptionally(error); + return; + } + getMetaRegionLocation(future, metaReplicaZNodes); + }); + return future; + }, "ZKConnectionRegistry.getMetaRegionLocations"); } private static ZooKeeperProtos.Master getMasterProto(byte[] data) throws IOException { @@ -230,7 +234,8 @@ private static ZooKeeperProtos.Master getMasterProto(byte[] data) throws IOExcep @Override public CompletableFuture getActiveMaster() { - return getAndConvert(znodePaths.masterAddressZNode, ZKConnectionRegistry::getMasterProto) + return tracedFuture( + () -> getAndConvert(znodePaths.masterAddressZNode, ZKConnectionRegistry::getMasterProto) .thenApply(proto -> { if (proto == null) { return null; @@ -238,7 +243,8 @@ public CompletableFuture getActiveMaster() { HBaseProtos.ServerName snProto = proto.getMaster(); return ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()); - }); + }), + "ZKConnectionRegistry.getActiveMaster"); } @Override From 90add4da46c3202abe02ea11526f28a7b66866ce Mon Sep 17 00:00:00 2001 From: "Tak Lon (Stephen) Wu" Date: Wed, 4 Aug 2021 20:47:12 -0700 Subject: [PATCH 2/2] fix comma and line break --- .../hbase/client/AbstractRpcBasedConnectionRegistry.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java index 687f263e2e61..925928762503 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRpcBasedConnectionRegistry.java @@ -266,8 +266,8 @@ public CompletableFuture getActiveMaster() { .call( (c, s, d) -> s.getActiveMaster(c, GetActiveMasterRequest.getDefaultInstance(), d), GetActiveMasterResponse::hasServerName, "getActiveMaster()") - .thenApply(resp -> ProtobufUtil.toServerName(resp.getServerName())) - , getClass().getSimpleName() + ".getActiveMaster"); + .thenApply(resp -> ProtobufUtil.toServerName(resp.getServerName())), + getClass().getSimpleName() + ".getActiveMaster"); } @Override