Skip to content

Commit 9de34d2

Browse files
committed
HDDS-1151. Propagate the tracing id in ScmBlockLocationProtocol.
Contributed by Elek, Marton.
1 parent ba4e7bd commit 9de34d2

File tree

8 files changed

+43
-12
lines changed

8 files changed

+43
-12
lines changed

hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocol.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.hadoop.ozone.common.BlockGroup;
2727
import org.apache.hadoop.ozone.common.DeleteBlockGroupResult;
2828

29+
import java.io.Closeable;
2930
import java.io.IOException;
3031
import java.util.List;
3132

@@ -34,7 +35,7 @@
3435
* to read/write a block.
3536
*/
3637
@KerberosInfo(serverPrincipal = ScmConfigKeys.HDDS_SCM_KERBEROS_PRINCIPAL_KEY)
37-
public interface ScmBlockLocationProtocol {
38+
public interface ScmBlockLocationProtocol extends Closeable {
3839

3940
/**
4041
* Asks SCM where a block should be allocated. SCM responds with the

hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/ScmBlockLocationProtocolClientSideTranslatorPB.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.hadoop.hdds.scm.container.common.helpers.AllocatedBlock;
3535
import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
3636
import org.apache.hadoop.hdds.scm.protocol.ScmBlockLocationProtocol;
37+
import org.apache.hadoop.hdds.tracing.TracingUtil;
3738
import org.apache.hadoop.ipc.ProtocolTranslator;
3839
import org.apache.hadoop.ipc.RPC;
3940
import org.apache.hadoop.ozone.common.BlockGroup;
@@ -83,8 +84,13 @@ public AllocatedBlock allocateBlock(long size,
8384
Preconditions.checkArgument(size > 0, "block size must be greater than 0");
8485

8586
AllocateScmBlockRequestProto request =
86-
AllocateScmBlockRequestProto.newBuilder().setSize(size).setType(type)
87-
.setFactor(factor).setOwner(owner).build();
87+
AllocateScmBlockRequestProto.newBuilder()
88+
.setSize(size)
89+
.setType(type)
90+
.setFactor(factor)
91+
.setOwner(owner)
92+
.setTraceID(TracingUtil.exportCurrentSpan())
93+
.build();
8894
final AllocateScmBlockResponseProto response;
8995
try {
9096
response = rpcProxy.allocateScmBlock(NULL_RPC_CONTROLLER, request);
@@ -117,7 +123,9 @@ public List<DeleteBlockGroupResult> deleteKeyBlocks(
117123
List<KeyBlocks> keyBlocksProto = keyBlocksInfoList.stream()
118124
.map(BlockGroup::getProto).collect(Collectors.toList());
119125
DeleteScmKeyBlocksRequestProto request = DeleteScmKeyBlocksRequestProto
120-
.newBuilder().addAllKeyBlocks(keyBlocksProto).build();
126+
.newBuilder()
127+
.addAllKeyBlocks(keyBlocksProto)
128+
.build();
121129

122130
final DeleteScmKeyBlocksResponseProto resp;
123131
try {

hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/protocolPB/ScmBlockLocationProtocolServerSideTranslatorPB.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
import com.google.protobuf.RpcController;
2121
import com.google.protobuf.ServiceException;
22+
import io.opentracing.Scope;
23+
2224
import org.apache.hadoop.classification.InterfaceAudience;
2325
import org.apache.hadoop.hdds.scm.ScmInfo;
2426
import org.apache.hadoop.hdds.scm.container.common.helpers.AllocatedBlock;
@@ -37,6 +39,7 @@
3739
.DeleteScmKeyBlocksRequestProto;
3840
import org.apache.hadoop.hdds.protocol.proto.ScmBlockLocationProtocolProtos
3941
.DeleteScmKeyBlocksResponseProto;
42+
import org.apache.hadoop.hdds.tracing.TracingUtil;
4043
import org.apache.hadoop.ozone.common.BlockGroup;
4144
import org.apache.hadoop.ozone.common.DeleteBlockGroupResult;
4245

@@ -69,7 +72,9 @@ public ScmBlockLocationProtocolServerSideTranslatorPB(
6972
public AllocateScmBlockResponseProto allocateScmBlock(
7073
RpcController controller, AllocateScmBlockRequestProto request)
7174
throws ServiceException {
72-
try {
75+
try (Scope scope = TracingUtil
76+
.importAndCreateScope("ScmBlockLocationProtocol.allocateBlock",
77+
request.getTraceID())) {
7378
AllocatedBlock allocatedBlock =
7479
impl.allocateBlock(request.getSize(), request.getType(),
7580
request.getFactor(), request.getOwner());

hadoop-hdds/common/src/main/proto/ScmBlockLocationProtocol.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ message AllocateScmBlockRequestProto {
4141
required ReplicationType type = 2;
4242
required hadoop.hdds.ReplicationFactor factor = 3;
4343
required string owner = 4;
44+
optional string traceID = 5;
4445

4546
}
4647

@@ -71,6 +72,8 @@ message KeyBlocks {
7172
*/
7273
message DeleteScmKeyBlocksResponseProto {
7374
repeated DeleteKeyBlocksResultProto results = 1;
75+
optional string traceID = 2;
76+
7477
}
7578

7679
/**

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMBlockProtocolServer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,4 +295,9 @@ public AuditMessage buildAuditMessageForFailure(AuditAction op, Map<String,
295295
.withException(throwable)
296296
.build();
297297
}
298+
299+
@Override
300+
public void close() throws IOException {
301+
stop();
302+
}
298303
}

hadoop-ozone/objectstore-service/src/main/java/org/apache/hadoop/hdfs/server/datanode/ObjectStoreHandler.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.sun.jersey.api.core.ApplicationAdapter;
2121
import org.apache.hadoop.conf.Configuration;
2222
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
23+
import org.apache.hadoop.hdds.scm.protocol.ScmBlockLocationProtocol;
2324
import org.apache.hadoop.hdds.scm.protocol.StorageContainerLocationProtocol;
2425
import org.apache.hadoop.hdds.scm.protocolPB.ScmBlockLocationProtocolClientSideTranslatorPB;
2526
import org.apache.hadoop.hdds.scm.protocolPB.ScmBlockLocationProtocolPB;
@@ -72,7 +73,7 @@ public final class ObjectStoreHandler implements Closeable {
7273
private final OzoneManagerProtocol ozoneManagerClient;
7374
private final StorageContainerLocationProtocol
7475
storageContainerLocationClient;
75-
private final ScmBlockLocationProtocolClientSideTranslatorPB
76+
private final ScmBlockLocationProtocol
7677
scmBlockLocationClient;
7778
private final StorageHandler storageHandler;
7879
private ClientId clientId = ClientId.randomId();
@@ -108,11 +109,13 @@ public ObjectStoreHandler(Configuration conf) throws IOException {
108109
InetSocketAddress scmBlockAddress =
109110
getScmAddressForBlockClients(conf);
110111
this.scmBlockLocationClient =
111-
new ScmBlockLocationProtocolClientSideTranslatorPB(
112-
RPC.getProxy(ScmBlockLocationProtocolPB.class, scmVersion,
113-
scmBlockAddress, UserGroupInformation.getCurrentUser(), conf,
114-
NetUtils.getDefaultSocketFactory(conf),
115-
Client.getRpcTimeout(conf)));
112+
TracingUtil.createProxy(
113+
new ScmBlockLocationProtocolClientSideTranslatorPB(
114+
RPC.getProxy(ScmBlockLocationProtocolPB.class, scmVersion,
115+
scmBlockAddress, UserGroupInformation.getCurrentUser(),
116+
conf, NetUtils.getDefaultSocketFactory(conf),
117+
Client.getRpcTimeout(conf))),
118+
ScmBlockLocationProtocol.class);
116119

117120
RPC.setProtocolEngine(conf, OzoneManagerProtocolPB.class,
118121
ProtobufRpcEngine.class);

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,8 @@ private static ScmBlockLocationProtocol getScmBlockClient(
724724
scmBlockAddress, UserGroupInformation.getCurrentUser(), conf,
725725
NetUtils.getDefaultSocketFactory(conf),
726726
Client.getRpcTimeout(conf)));
727-
return scmBlockLocationClient;
727+
return TracingUtil
728+
.createProxy(scmBlockLocationClient, ScmBlockLocationProtocol.class);
728729
}
729730

730731
/**

hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ScmBlockLocationTestIngClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,9 @@ public ScmInfo getScmInfo() throws IOException {
178178
.setScmId(scmId);
179179
return builder.build();
180180
}
181+
182+
@Override
183+
public void close() throws IOException {
184+
185+
}
181186
}

0 commit comments

Comments
 (0)