|
@@ -16,64 +16,57 @@
|
|
|
*/
|
|
|
package org.apache.hadoop.hdds.scm.protocolPB;
|
|
|
|
|
|
-import com.google.common.base.Preconditions;
|
|
|
-import com.google.protobuf.RpcController;
|
|
|
-import com.google.protobuf.ServiceException;
|
|
|
+import java.io.Closeable;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.function.Consumer;
|
|
|
+
|
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.GetScmInfoResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ActivatePipelineRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DeactivatePipelineRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineResponseProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ClosePipelineRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DeactivatePipelineRequestProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ForceExitSafeModeRequestProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ForceExitSafeModeResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerRequestProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineResponseProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.InSafeModeRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.InSafeModeResponseProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartReplicationManagerRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StopReplicationManagerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.NodeQueryRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.NodeQueryResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ObjectStageChangeRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ReplicationManagerStatusRequestProto;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ReplicationManagerStatusResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMDeleteContainerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerResponseProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationRequest;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationRequest.Builder;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationResponse;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartReplicationManagerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StopReplicationManagerRequestProto;
|
|
|
+import org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.Type;
|
|
|
import org.apache.hadoop.hdds.scm.ScmInfo;
|
|
|
-import org.apache.hadoop.hdds.scm.container.common.helpers.ContainerWithPipeline;
|
|
|
import org.apache.hadoop.hdds.scm.container.ContainerInfo;
|
|
|
+import org.apache.hadoop.hdds.scm.container.common.helpers.ContainerWithPipeline;
|
|
|
import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
|
|
|
import org.apache.hadoop.hdds.scm.protocol.StorageContainerLocationProtocol;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.ContainerRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.ContainerResponseProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.GetContainerRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.GetContainerResponseProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.NodeQueryRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.NodeQueryResponseProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.ObjectStageChangeRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.PipelineRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.PipelineResponseProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.SCMDeleteContainerRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.SCMListContainerRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.proto
|
|
|
- .StorageContainerLocationProtocolProtos.SCMListContainerResponseProto;
|
|
|
import org.apache.hadoop.hdds.tracing.TracingUtil;
|
|
|
import org.apache.hadoop.ipc.ProtobufHelper;
|
|
|
import org.apache.hadoop.ipc.ProtocolTranslator;
|
|
|
import org.apache.hadoop.ipc.RPC;
|
|
|
|
|
|
-import java.io.Closeable;
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
+import com.google.common.base.Preconditions;
|
|
|
+import com.google.protobuf.RpcController;
|
|
|
+import com.google.protobuf.ServiceException;
|
|
|
|
|
|
/**
|
|
|
* This class is the client-side translator to translate the requests made on
|
|
@@ -101,14 +94,35 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
this.rpcProxy = rpcProxy;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Helper method to wrap the request and send the message.
|
|
|
+ */
|
|
|
+ private ScmContainerLocationResponse submitRequest(
|
|
|
+ StorageContainerLocationProtocolProtos.Type type,
|
|
|
+ Consumer<Builder> builderConsumer) throws IOException {
|
|
|
+ final ScmContainerLocationResponse response;
|
|
|
+ try {
|
|
|
+
|
|
|
+ Builder builder = ScmContainerLocationRequest.newBuilder()
|
|
|
+ .setCmdType(type)
|
|
|
+ .setTraceID(TracingUtil.exportCurrentSpan());
|
|
|
+ builderConsumer.accept(builder);
|
|
|
+ ScmContainerLocationRequest wrapper = builder.build();
|
|
|
+
|
|
|
+ response = rpcProxy.submitRequest(NULL_RPC_CONTROLLER, wrapper);
|
|
|
+ } catch (ServiceException ex) {
|
|
|
+ throw ProtobufHelper.getRemoteException(ex);
|
|
|
+ }
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Asks SCM where a container should be allocated. SCM responds with the set
|
|
|
* of datanodes that should be used creating this container. Ozone/SCM only
|
|
|
* supports replication factor of either 1 or 3.
|
|
|
- * @param type - Replication Type
|
|
|
+ *
|
|
|
+ * @param type - Replication Type
|
|
|
* @param factor - Replication Count
|
|
|
- * @return
|
|
|
- * @throws IOException
|
|
|
*/
|
|
|
@Override
|
|
|
public ContainerWithPipeline allocateContainer(
|
|
@@ -122,12 +136,11 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setOwner(owner)
|
|
|
.build();
|
|
|
|
|
|
- final ContainerResponseProto response;
|
|
|
- try {
|
|
|
- response = rpcProxy.allocateContainer(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ ContainerResponseProto response =
|
|
|
+ submitRequest(Type.AllocateContainer,
|
|
|
+ builder -> builder.setContainerRequest(request))
|
|
|
+ .getContainerResponse();
|
|
|
+ //TODO should be migrated to use the top level status structure.
|
|
|
if (response.getErrorCode() != ContainerResponseProto.Error.success) {
|
|
|
throw new IOException(response.hasErrorMessage() ?
|
|
|
response.getErrorMessage() : "Allocate container failed.");
|
|
@@ -144,13 +157,12 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setContainerID(containerID)
|
|
|
.setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
.build();
|
|
|
- try {
|
|
|
- GetContainerResponseProto response =
|
|
|
- rpcProxy.getContainer(NULL_RPC_CONTROLLER, request);
|
|
|
- return ContainerInfo.fromProtobuf(response.getContainerInfo());
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ ScmContainerLocationResponse response =
|
|
|
+ submitRequest(Type.GetContainer,
|
|
|
+ (builder) -> builder.setGetContainerRequest(request));
|
|
|
+ return ContainerInfo
|
|
|
+ .fromProtobuf(response.getGetContainerResponse().getContainerInfo());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -164,14 +176,15 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
GetContainerWithPipelineRequestProto.newBuilder()
|
|
|
.setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
.setContainerID(containerID).build();
|
|
|
- try {
|
|
|
- GetContainerWithPipelineResponseProto response =
|
|
|
- rpcProxy.getContainerWithPipeline(NULL_RPC_CONTROLLER, request);
|
|
|
- return ContainerWithPipeline.fromProtobuf(
|
|
|
- response.getContainerWithPipeline());
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ ScmContainerLocationResponse response =
|
|
|
+ submitRequest(Type.GetContainerWithPipeline,
|
|
|
+ (builder) -> builder.setGetContainerWithPipelineRequest(request));
|
|
|
+
|
|
|
+ return ContainerWithPipeline.fromProtobuf(
|
|
|
+ response.getGetContainerWithPipelineResponse()
|
|
|
+ .getContainerWithPipeline());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -191,26 +204,22 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
builder.setTraceID(TracingUtil.exportCurrentSpan());
|
|
|
SCMListContainerRequestProto request = builder.build();
|
|
|
|
|
|
- try {
|
|
|
- SCMListContainerResponseProto response =
|
|
|
- rpcProxy.listContainer(NULL_RPC_CONTROLLER, request);
|
|
|
- List<ContainerInfo> containerList = new ArrayList<>();
|
|
|
- for (HddsProtos.ContainerInfoProto containerInfoProto : response
|
|
|
- .getContainersList()) {
|
|
|
- containerList.add(ContainerInfo.fromProtobuf(containerInfoProto));
|
|
|
- }
|
|
|
- return containerList;
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
+ SCMListContainerResponseProto response =
|
|
|
+ submitRequest(Type.ListContainer,
|
|
|
+ builder1 -> builder1.setScmListContainerRequest(request))
|
|
|
+ .getScmListContainerResponse();
|
|
|
+ List<ContainerInfo> containerList = new ArrayList<>();
|
|
|
+ for (HddsProtos.ContainerInfoProto containerInfoProto : response
|
|
|
+ .getContainersList()) {
|
|
|
+ containerList.add(ContainerInfo.fromProtobuf(containerInfoProto));
|
|
|
}
|
|
|
+ return containerList;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Ask SCM to delete a container by name. SCM will remove
|
|
|
* the container mapping in its database.
|
|
|
- *
|
|
|
- * @param containerID
|
|
|
- * @throws IOException
|
|
|
*/
|
|
|
@Override
|
|
|
public void deleteContainer(long containerID)
|
|
@@ -222,18 +231,13 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
.setContainerID(containerID)
|
|
|
.build();
|
|
|
- try {
|
|
|
- rpcProxy.deleteContainer(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ submitRequest(Type.DeleteContainer,
|
|
|
+ builder -> builder.setScmDeleteContainerRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Queries a list of Node Statuses.
|
|
|
- *
|
|
|
- * @param nodeStatuses
|
|
|
- * @return List of Datanodes.
|
|
|
*/
|
|
|
@Override
|
|
|
public List<HddsProtos.Node> queryNode(HddsProtos.NodeState
|
|
@@ -246,21 +250,18 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setState(nodeStatuses)
|
|
|
.setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
.setScope(queryScope).setPoolName(poolName).build();
|
|
|
- try {
|
|
|
- NodeQueryResponseProto response =
|
|
|
- rpcProxy.queryNode(NULL_RPC_CONTROLLER, request);
|
|
|
- return response.getDatanodesList();
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ NodeQueryResponseProto response = submitRequest(Type.QueryNode,
|
|
|
+ builder -> builder.setNodeQueryRequest(request)).getNodeQueryResponse();
|
|
|
+ return response.getDatanodesList();
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Notify from client that creates object on datanodes.
|
|
|
- * @param type object type
|
|
|
- * @param id object id
|
|
|
- * @param op operation type (e.g., create, close, delete)
|
|
|
+ *
|
|
|
+ * @param type object type
|
|
|
+ * @param id object id
|
|
|
+ * @param op operation type (e.g., create, close, delete)
|
|
|
* @param stage object creation stage : begin/complete
|
|
|
*/
|
|
|
@Override
|
|
@@ -278,20 +279,17 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setOp(op)
|
|
|
.setStage(stage)
|
|
|
.build();
|
|
|
- try {
|
|
|
- rpcProxy.notifyObjectStageChange(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch(ServiceException e){
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ submitRequest(Type.NotifyObjectStageChange,
|
|
|
+ builder -> builder.setObjectStageChangeRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Creates a replication pipeline of a specified type.
|
|
|
*
|
|
|
* @param replicationType - replication type
|
|
|
- * @param factor - factor 1 or 3
|
|
|
- * @param nodePool - optional machine list to build a pipeline.
|
|
|
- * @throws IOException
|
|
|
+ * @param factor - factor 1 or 3
|
|
|
+ * @param nodePool - optional machine list to build a pipeline.
|
|
|
*/
|
|
|
@Override
|
|
|
public Pipeline createReplicationPipeline(HddsProtos.ReplicationType
|
|
@@ -303,87 +301,82 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
.setReplicationFactor(factor)
|
|
|
.setReplicationType(replicationType)
|
|
|
.build();
|
|
|
- try {
|
|
|
- PipelineResponseProto response =
|
|
|
- rpcProxy.allocatePipeline(NULL_RPC_CONTROLLER, request);
|
|
|
- if (response.getErrorCode() ==
|
|
|
- PipelineResponseProto.Error.success) {
|
|
|
- Preconditions.checkState(response.hasPipeline(), "With success, " +
|
|
|
- "must come a pipeline");
|
|
|
- return Pipeline.getFromProtobuf(response.getPipeline());
|
|
|
- } else {
|
|
|
- String errorMessage = String.format("create replication pipeline " +
|
|
|
- "failed. code : %s Message: %s", response.getErrorCode(),
|
|
|
- response.hasErrorMessage() ? response.getErrorMessage() : "");
|
|
|
- throw new IOException(errorMessage);
|
|
|
- }
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
+
|
|
|
+ PipelineResponseProto response =
|
|
|
+ submitRequest(Type.AllocatePipeline,
|
|
|
+ builder -> builder.setPipelineRequest(request))
|
|
|
+ .getPipelineResponse();
|
|
|
+ if (response.getErrorCode() ==
|
|
|
+ PipelineResponseProto.Error.success) {
|
|
|
+ Preconditions.checkState(response.hasPipeline(), "With success, " +
|
|
|
+ "must come a pipeline");
|
|
|
+ return Pipeline.getFromProtobuf(response.getPipeline());
|
|
|
+ } else {
|
|
|
+ String errorMessage = String.format("create replication pipeline " +
|
|
|
+ "failed. code : %s Message: %s", response.getErrorCode(),
|
|
|
+ response.hasErrorMessage() ? response.getErrorMessage() : "");
|
|
|
+ throw new IOException(errorMessage);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<Pipeline> listPipelines() throws IOException {
|
|
|
- try {
|
|
|
- ListPipelineRequestProto request = ListPipelineRequestProto
|
|
|
- .newBuilder().setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
- .build();
|
|
|
- ListPipelineResponseProto response = rpcProxy.listPipelines(
|
|
|
- NULL_RPC_CONTROLLER, request);
|
|
|
- List<Pipeline> list = new ArrayList<>();
|
|
|
- for (HddsProtos.Pipeline pipeline : response.getPipelinesList()) {
|
|
|
- Pipeline fromProtobuf = Pipeline.getFromProtobuf(pipeline);
|
|
|
- list.add(fromProtobuf);
|
|
|
- }
|
|
|
- return list;
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
+ ListPipelineRequestProto request = ListPipelineRequestProto
|
|
|
+ .newBuilder().setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ ListPipelineResponseProto response = submitRequest(Type.ListPipelines,
|
|
|
+ builder -> builder.setListPipelineRequest(request))
|
|
|
+ .getListPipelineResponse();
|
|
|
+
|
|
|
+ List<Pipeline> list = new ArrayList<>();
|
|
|
+ for (HddsProtos.Pipeline pipeline : response.getPipelinesList()) {
|
|
|
+ Pipeline fromProtobuf = Pipeline.getFromProtobuf(pipeline);
|
|
|
+ list.add(fromProtobuf);
|
|
|
}
|
|
|
+ return list;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void activatePipeline(HddsProtos.PipelineID pipelineID)
|
|
|
throws IOException {
|
|
|
- try {
|
|
|
- ActivatePipelineRequestProto request =
|
|
|
- ActivatePipelineRequestProto.newBuilder()
|
|
|
- .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
- .setPipelineID(pipelineID)
|
|
|
- .build();
|
|
|
- rpcProxy.activatePipeline(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ ActivatePipelineRequestProto request =
|
|
|
+ ActivatePipelineRequestProto.newBuilder()
|
|
|
+ .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
+ .setPipelineID(pipelineID)
|
|
|
+ .build();
|
|
|
+ submitRequest(Type.ActivatePipeline,
|
|
|
+ builder -> builder.setActivatePipelineRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deactivatePipeline(HddsProtos.PipelineID pipelineID)
|
|
|
throws IOException {
|
|
|
- try {
|
|
|
- DeactivatePipelineRequestProto request =
|
|
|
- DeactivatePipelineRequestProto.newBuilder()
|
|
|
- .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
- .setPipelineID(pipelineID)
|
|
|
- .build();
|
|
|
- rpcProxy.deactivatePipeline(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ DeactivatePipelineRequestProto request =
|
|
|
+ DeactivatePipelineRequestProto.newBuilder()
|
|
|
+ .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
+ .setPipelineID(pipelineID)
|
|
|
+ .build();
|
|
|
+ submitRequest(Type.DeactivatePipeline,
|
|
|
+ builder -> builder.setDeactivatePipelineRequest(request));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void closePipeline(HddsProtos.PipelineID pipelineID)
|
|
|
throws IOException {
|
|
|
- try {
|
|
|
- ClosePipelineRequestProto request =
|
|
|
- ClosePipelineRequestProto.newBuilder()
|
|
|
- .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
- .setPipelineID(pipelineID)
|
|
|
- .build();
|
|
|
- rpcProxy.closePipeline(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ ClosePipelineRequestProto request =
|
|
|
+ ClosePipelineRequestProto.newBuilder()
|
|
|
+ .setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
+ .setPipelineID(pipelineID)
|
|
|
+ .build();
|
|
|
+ submitRequest(Type.ClosePipeline,
|
|
|
+ builder -> builder.setClosePipelineRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -392,16 +385,14 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
HddsProtos.GetScmInfoRequestProto.newBuilder()
|
|
|
.setTraceID(TracingUtil.exportCurrentSpan())
|
|
|
.build();
|
|
|
- try {
|
|
|
- HddsProtos.GetScmInfoResponseProto resp = rpcProxy.getScmInfo(
|
|
|
- NULL_RPC_CONTROLLER, request);
|
|
|
- ScmInfo.Builder builder = new ScmInfo.Builder()
|
|
|
- .setClusterId(resp.getClusterId())
|
|
|
- .setScmId(resp.getScmId());
|
|
|
- return builder.build();
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ GetScmInfoResponseProto resp = submitRequest(Type.GetScmInfo,
|
|
|
+ builder -> builder.setGetScmInfoRequest(request))
|
|
|
+ .getGetScmInfoResponse();
|
|
|
+ ScmInfo.Builder builder = new ScmInfo.Builder()
|
|
|
+ .setClusterId(resp.getClusterId())
|
|
|
+ .setScmId(resp.getScmId());
|
|
|
+ return builder.build();
|
|
|
|
|
|
}
|
|
|
|
|
@@ -409,73 +400,67 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
|
|
|
* Check if SCM is in safe mode.
|
|
|
*
|
|
|
* @return Returns true if SCM is in safe mode else returns false.
|
|
|
- * @throws IOException
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean inSafeMode() throws IOException {
|
|
|
InSafeModeRequestProto request =
|
|
|
InSafeModeRequestProto.getDefaultInstance();
|
|
|
- try {
|
|
|
- InSafeModeResponseProto resp = rpcProxy.inSafeMode(
|
|
|
- NULL_RPC_CONTROLLER, request);
|
|
|
- return resp.getInSafeMode();
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ return submitRequest(Type.InSafeMode,
|
|
|
+ builder -> builder.setInSafeModeRequest(request))
|
|
|
+ .getInSafeModeResponse().getInSafeMode();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Force SCM out of Safe mode.
|
|
|
*
|
|
|
* @return returns true if operation is successful.
|
|
|
- * @throws IOException
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean forceExitSafeMode() throws IOException {
|
|
|
ForceExitSafeModeRequestProto request =
|
|
|
ForceExitSafeModeRequestProto.getDefaultInstance();
|
|
|
- try {
|
|
|
- ForceExitSafeModeResponseProto resp = rpcProxy
|
|
|
- .forceExitSafeMode(NULL_RPC_CONTROLLER, request);
|
|
|
- return resp.getExitedSafeMode();
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+ ForceExitSafeModeResponseProto resp =
|
|
|
+ submitRequest(Type.ForceExitSafeMode,
|
|
|
+ builder -> builder.setForceExitSafeModeRequest(request))
|
|
|
+ .getForceExitSafeModeResponse();
|
|
|
+
|
|
|
+ return resp.getExitedSafeMode();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void startReplicationManager() throws IOException {
|
|
|
- try {
|
|
|
- StartReplicationManagerRequestProto request =
|
|
|
- StartReplicationManagerRequestProto.getDefaultInstance();
|
|
|
- rpcProxy.startReplicationManager(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ StartReplicationManagerRequestProto request =
|
|
|
+ StartReplicationManagerRequestProto.getDefaultInstance();
|
|
|
+ submitRequest(Type.StartReplicationManager,
|
|
|
+ builder -> builder.setStartReplicationManagerRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void stopReplicationManager() throws IOException {
|
|
|
- try {
|
|
|
- StopReplicationManagerRequestProto request =
|
|
|
- StopReplicationManagerRequestProto.getDefaultInstance();
|
|
|
- rpcProxy.stopReplicationManager(NULL_RPC_CONTROLLER, request);
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ StopReplicationManagerRequestProto request =
|
|
|
+ StopReplicationManagerRequestProto.getDefaultInstance();
|
|
|
+ submitRequest(Type.StopReplicationManager,
|
|
|
+ builder -> builder.setStopReplicationManagerRequest(request));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean getReplicationManagerStatus() throws IOException {
|
|
|
- try {
|
|
|
- ReplicationManagerStatusRequestProto request =
|
|
|
- ReplicationManagerStatusRequestProto.getDefaultInstance();
|
|
|
- ReplicationManagerStatusResponseProto response =
|
|
|
- rpcProxy.getReplicationManagerStatus(NULL_RPC_CONTROLLER, request);
|
|
|
- return response.getIsRunning();
|
|
|
- } catch (ServiceException e) {
|
|
|
- throw ProtobufHelper.getRemoteException(e);
|
|
|
- }
|
|
|
+
|
|
|
+ ReplicationManagerStatusRequestProto request =
|
|
|
+ ReplicationManagerStatusRequestProto.getDefaultInstance();
|
|
|
+ ReplicationManagerStatusResponseProto response =
|
|
|
+ submitRequest(Type.GetReplicationManagerStatus,
|
|
|
+ builder -> builder.setSeplicationManagerStatusRequest(request))
|
|
|
+ .getReplicationManagerStatusResponse();
|
|
|
+ return response.getIsRunning();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|