in hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java [409:743]
public ScmContainerLocationResponse processRequest(
ScmContainerLocationRequest request) throws ServiceException {
try {
switch (request.getCmdType()) {
case AllocateContainer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setContainerResponse(allocateContainer(
request.getContainerRequest(), request.getVersion()))
.build();
case GetContainer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerResponse(
getContainer(request.getGetContainerRequest()))
.build();
case GetContainerToken:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setContainerTokenResponse(
getContainerToken(request.getContainerTokenRequest()))
.build();
case GetContainerWithPipeline:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerWithPipelineResponse(getContainerWithPipeline(
request.getGetContainerWithPipelineRequest(),
request.getVersion()))
.build();
case GetContainerWithPipelineBatch:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerWithPipelineBatchResponse(
getContainerWithPipelineBatch(
request.getGetContainerWithPipelineBatchRequest(),
request.getVersion()))
.build();
case GetExistContainerWithPipelinesInBatch:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetExistContainerWithPipelinesInBatchResponse(
getExistContainerWithPipelinesInBatch(
request.getGetExistContainerWithPipelinesInBatchRequest(),
request.getVersion()))
.build();
case ListContainer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setScmListContainerResponse(listContainer(
request.getScmListContainerRequest()))
.build();
case QueryNode:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setNodeQueryResponse(queryNode(request.getNodeQueryRequest(),
request.getVersion()))
.build();
case SingleNodeQuery:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setSingleNodeQueryResponse(querySingleNode(request
.getSingleNodeQueryRequest()))
.build();
case CloseContainer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setScmCloseContainerResponse(closeContainer(
request.getScmCloseContainerRequest()))
.build();
case AllocatePipeline:
if (scm.getLayoutVersionManager().needsFinalization() &&
!scm.getLayoutVersionManager().isAllowed(
HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT)
) {
if (request.getPipelineRequest().getReplicationType() ==
HddsProtos.ReplicationType.EC) {
throw new SCMException("Cluster is not finalized yet, it is"
+ " not enabled to create pipelines with Erasure Coded"
+ " replication type.",
SCMException.ResultCodes.INTERNAL_ERROR);
}
}
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setPipelineResponse(allocatePipeline(
request.getPipelineRequest(), request.getVersion()))
.build();
case ListPipelines:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setListPipelineResponse(listPipelines(
request.getListPipelineRequest(), request.getVersion()))
.build();
case ActivatePipeline:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setActivatePipelineResponse(activatePipeline(
request.getActivatePipelineRequest()))
.build();
case DeactivatePipeline:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setDeactivatePipelineResponse(deactivatePipeline(
request.getDeactivatePipelineRequest()))
.build();
case ClosePipeline:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setClosePipelineResponse(closePipeline(
request.getClosePipelineRequest()))
.build();
case GetScmInfo:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetScmInfoResponse(getScmInfo(
request.getGetScmInfoRequest()))
.build();
case InSafeMode:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setInSafeModeResponse(inSafeMode(
request.getInSafeModeRequest()))
.build();
case ForceExitSafeMode:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setForceExitSafeModeResponse(forceExitSafeMode(
request.getForceExitSafeModeRequest()))
.build();
case StartReplicationManager:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setStartReplicationManagerResponse(startReplicationManager(
request.getStartReplicationManagerRequest()))
.build();
case StopReplicationManager:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setStopReplicationManagerResponse(stopReplicationManager(
request.getStopReplicationManagerRequest()))
.build();
case GetReplicationManagerStatus:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setReplicationManagerStatusResponse(getReplicationManagerStatus(
request.getSeplicationManagerStatusRequest()))
.build();
case GetReplicationManagerReport:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetReplicationManagerReportResponse(getReplicationManagerReport(
request.getReplicationManagerReportRequest()))
.build();
case StartContainerBalancer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setStartContainerBalancerResponse(startContainerBalancer(
request.getStartContainerBalancerRequest()))
.build();
case StopContainerBalancer:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setStopContainerBalancerResponse(stopContainerBalancer(
request.getStopContainerBalancerRequest()))
.build();
case GetContainerBalancerStatus:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setContainerBalancerStatusResponse(getContainerBalancerStatus(
request.getContainerBalancerStatusRequest()))
.build();
case GetContainerBalancerStatusInfo:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setContainerBalancerStatusInfoResponse(getContainerBalancerStatusInfo(
request.getContainerBalancerStatusInfoRequest()))
.build();
case GetPipeline:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetPipelineResponse(getPipeline(
request.getGetPipelineRequest(), request.getVersion()))
.build();
case GetSafeModeRuleStatuses:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType()).setStatus(Status.OK)
.setGetSafeModeRuleStatusesResponse(getSafeModeRuleStatues(
request.getGetSafeModeRuleStatusesRequest()))
.build();
case DecommissionNodes:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setDecommissionNodesResponse(decommissionNodes(
request.getDecommissionNodesRequest()))
.build();
case GetContainersOnDecomNode:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainersOnDecomNodeResponse(getContainersOnDecomNode(request.getGetContainersOnDecomNodeRequest()))
.build();
case RecommissionNodes:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setRecommissionNodesResponse(recommissionNodes(
request.getRecommissionNodesRequest()))
.build();
case StartMaintenanceNodes:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setStartMaintenanceNodesResponse(startMaintenanceNodes(
request.getStartMaintenanceNodesRequest()))
.build();
case FinalizeScmUpgrade:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setFinalizeScmUpgradeResponse(getFinalizeScmUpgrade(
request.getFinalizeScmUpgradeRequest()))
.build();
case QueryUpgradeFinalizationProgress:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setQueryUpgradeFinalizationProgressResponse(
getQueryUpgradeFinalizationProgress(
request.getQueryUpgradeFinalizationProgressRequest()))
.build();
case DatanodeUsageInfo:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setDatanodeUsageInfoResponse(getDatanodeUsageInfo(
request.getDatanodeUsageInfoRequest(),
request.getVersion()))
.build();
case GetContainerCount:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerCountResponse(getContainerCount(
request.getGetContainerCountRequest()))
.build();
case GetClosedContainerCount:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerCountResponse(getClosedContainerCount(
request.getGetContainerCountRequest()))
.build();
case GetContainerReplicas:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetContainerReplicasResponse(getContainerReplicas(
request.getGetContainerReplicasRequest(),
request.getVersion()))
.build();
case GetFailedDeletedBlocksTransaction:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetFailedDeletedBlocksTxnResponse(getFailedDeletedBlocksTxn(
request.getGetFailedDeletedBlocksTxnRequest()
))
.build();
case ResetDeletedBlockRetryCount:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setResetDeletedBlockRetryCountResponse(
getResetDeletedBlockRetryCount(
request.getResetDeletedBlockRetryCountRequest()))
.build();
case TransferLeadership:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setTransferScmLeadershipResponse(
transferScmLeadership(
request.getTransferScmLeadershipRequest()))
.build();
case DecommissionScm:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setDecommissionScmResponse(decommissionScm(
request.getDecommissionScmRequest()))
.build();
case GetMetrics:
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType())
.setStatus(Status.OK)
.setGetMetricsResponse(getMetrics(request.getGetMetricsRequest()))
.build();
default:
throw new IllegalArgumentException(
"Unknown command type: " + request.getCmdType());
}
} catch (IOException e) {
RatisUtil
.checkRatisException(e, scm.getClientRpcPort(), scm.getScmId(), scm.getHostname(), ROLE_TYPE);
throw new ServiceException(e);
}
}