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 7ecf54f365fadf87f1ab1d90b21f094ce86646c4 Author: Tak Lon (Stephen) Wu <[email protected]> AuthorDate: Thu Aug 12 12:38:53 2021 -0700 HBASE-26128 Backport HBASE-25454 "Add trace support for connection re… (#3561) 5/17 commits of HBASE-22120, original commit dcb78bd4bda4a4ae13d863df8aec266031e5bc93 and merged conflicts after rebasing on HBASE-26150 with commit 63d4970de451bf234f2ddbda949995b1420e525b Co-authored-by: Duo Zhang <[email protected]> Signed-off-by: Duo Zhang <[email protected]> --- .../client/AbstractRpcBasedConnectionRegistry.java | 52 +++++++++++++--------- .../hadoop/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 7d946aa..54138d3 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; @@ -237,38 +239,48 @@ abstract class AbstractRpcBasedConnectionRegistry implements ConnectionRegistry @Override public CompletableFuture<RegionLocations> getMetaRegionLocations() { - return this - .<GetMetaRegionLocationsResponse> call((c, s, d) -> s.getMetaRegionLocations(c, - GetMetaRegionLocationsRequest.getDefaultInstance(), d), r -> r.getMetaLocationsCount() != 0, + return tracedFuture( + () -> this + .<GetMetaRegionLocationsResponse> 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<String> getClusterId() { - return this - .<GetClusterIdResponse> call( - (c, s, d) -> s.getClusterId(c, GetClusterIdRequest.getDefaultInstance(), d), - GetClusterIdResponse::hasClusterId, "getClusterId()") - .thenApply(GetClusterIdResponse::getClusterId); + return tracedFuture( + () -> this + .<GetClusterIdResponse> call( + (c, s, d) -> s.getClusterId(c, GetClusterIdRequest.getDefaultInstance(), d), + GetClusterIdResponse::hasClusterId, "getClusterId()") + .thenApply(GetClusterIdResponse::getClusterId), + getClass().getSimpleName() + ".getClusterId"); } @Override public CompletableFuture<ServerName> getActiveMaster() { - return this - .<GetActiveMasterResponse> call( - (c, s, d) -> s.getActiveMaster(c, GetActiveMasterRequest.getDefaultInstance(), d), - GetActiveMasterResponse::hasServerName, "getActiveMaster()") - .thenApply(resp -> ProtobufUtil.toServerName(resp.getServerName())); + return tracedFuture( + () -> this + .<GetActiveMasterResponse>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 35107ca..6e94afe 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.RegionInfoBuilder.FIRST_META_REGION 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 @@ class ZKConnectionRegistry implements ConnectionRegistry { @Override public CompletableFuture<String> getClusterId() { - return getAndConvert(znodePaths.clusterIdZNode, ZKConnectionRegistry::getClusterId); + return tracedFuture( + () -> getAndConvert(znodePaths.clusterIdZNode, ZKConnectionRegistry::getClusterId), + "ZKConnectionRegistry.getClusterId"); } ReadOnlyZKClient getZKClient() { @@ -204,19 +207,20 @@ class ZKConnectionRegistry implements ConnectionRegistry { @Override public CompletableFuture<RegionLocations> getMetaRegionLocations() { - CompletableFuture<RegionLocations> future = new CompletableFuture<>(); - addListener( - zk.list(znodePaths.baseZNode) - .thenApply(children -> children.stream() + return tracedFuture(() -> { + CompletableFuture<RegionLocations> 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 @@ class ZKConnectionRegistry implements ConnectionRegistry { @Override public CompletableFuture<ServerName> 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 @@ class ZKConnectionRegistry implements ConnectionRegistry { HBaseProtos.ServerName snProto = proto.getMaster(); return ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()); - }); + }), + "ZKConnectionRegistry.getActiveMaster"); } @Override
