HDFS-12901. Ozone: SCM: Expose StorageContainerManager#getScmId through container protocol. Contributed by Nanda kumar.

This commit is contained in:
Anu Engineer 2017-12-06 13:59:29 -08:00 committed by Owen O'Malley
parent 11473b8204
commit 74362cb503
8 changed files with 69 additions and 28 deletions

View File

@ -22,6 +22,7 @@
import java.util.List; import java.util.List;
import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.NotifyObjectCreationStageRequestProto; import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.NotifyObjectCreationStageRequestProto;
import org.apache.hadoop.scm.ScmInfo;
import org.apache.hadoop.scm.container.common.helpers.ContainerInfo; import org.apache.hadoop.scm.container.common.helpers.ContainerInfo;
import org.apache.hadoop.scm.container.common.helpers.Pipeline; import org.apache.hadoop.scm.container.common.helpers.Pipeline;
import org.apache.hadoop.ozone.protocol.proto.OzoneProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneProtos;
@ -117,4 +118,12 @@ Pipeline createReplicationPipeline(OzoneProtos.ReplicationType type,
* @throws IOException * @throws IOException
*/ */
void closeContainer(String containerName) throws IOException; void closeContainer(String containerName) throws IOException;
/**
* Returns information about SCM.
*
* @return {@link ScmInfo}
* @throws IOException
*/
ScmInfo getScmInfo() throws IOException;
} }

View File

@ -33,8 +33,6 @@
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmBlockLocationsRequestProto; import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmBlockLocationsRequestProto;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmBlockLocationsResponseProto; import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmBlockLocationsResponseProto;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.ScmLocatedBlockProto; import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.ScmLocatedBlockProto;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmInfoRequestProto;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.GetScmInfoRespsonseProto;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.KeyBlocks; import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.KeyBlocks;
import org.apache.hadoop.scm.container.common.helpers.AllocatedBlock; import org.apache.hadoop.scm.container.common.helpers.AllocatedBlock;
import org.apache.hadoop.scm.ScmInfo; import org.apache.hadoop.scm.ScmInfo;
@ -185,9 +183,9 @@ public List<DeleteBlockGroupResult> deleteKeyBlocks(
*/ */
@Override @Override
public ScmInfo getScmInfo() throws IOException { public ScmInfo getScmInfo() throws IOException {
GetScmInfoRequestProto request = OzoneProtos.GetScmInfoRequestProto request =
GetScmInfoRequestProto.getDefaultInstance(); OzoneProtos.GetScmInfoRequestProto.getDefaultInstance();
GetScmInfoRespsonseProto resp; OzoneProtos.GetScmInfoRespsonseProto resp;
try { try {
resp = rpcProxy.getScmInfo(NULL_RPC_CONTROLLER, request); resp = rpcProxy.getScmInfo(NULL_RPC_CONTROLLER, request);
} catch (ServiceException e) { } catch (ServiceException e) {

View File

@ -25,6 +25,7 @@
import org.apache.hadoop.ipc.ProtocolTranslator; import org.apache.hadoop.ipc.ProtocolTranslator;
import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ozone.protocol.proto.OzoneProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneProtos;
import org.apache.hadoop.scm.ScmInfo;
import org.apache.hadoop.scm.container.common.helpers.ContainerInfo; import org.apache.hadoop.scm.container.common.helpers.ContainerInfo;
import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol; import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol;
import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.CloseContainerRequestProto; import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.CloseContainerRequestProto;
@ -287,6 +288,23 @@ public void closeContainer(String containerName) throws IOException {
} }
} }
@Override
public ScmInfo getScmInfo() throws IOException {
OzoneProtos.GetScmInfoRequestProto request =
OzoneProtos.GetScmInfoRequestProto.getDefaultInstance();
try {
OzoneProtos.GetScmInfoRespsonseProto 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);
}
}
@Override @Override
public Object getUnderlyingProxyObject() { public Object getUnderlyingProxyObject() {
return rpcProxy; return rpcProxy;

View File

@ -133,6 +133,15 @@ message SCMContainerInfo {
optional Owner owner = 8 [default = OZONE]; optional Owner owner = 8 [default = OZONE];
} }
message GetScmInfoRequestProto {
}
message GetScmInfoRespsonseProto {
required string clusterId = 1;
required string scmId = 2;
}
enum ReplicationType { enum ReplicationType {
RATIS = 1; RATIS = 1;
STAND_ALONE = 2; STAND_ALONE = 2;

View File

@ -131,20 +131,6 @@ message AllocateScmBlockResponseProto {
optional string errorMessage = 5; optional string errorMessage = 5;
} }
/**
* Request for cluster Id and SCM Id from SCM.
*/
message GetScmInfoRequestProto {
}
/**
* Response from SCM for cluster Id and SCM ID.
*/
message GetScmInfoRespsonseProto {
required string clusterId = 1;
required string scmId = 2;
}
/** /**
* Protocol used from KeySpaceManager to StorageContainerManager. * Protocol used from KeySpaceManager to StorageContainerManager.
* See request and response messages for details of the RPC calls. * See request and response messages for details of the RPC calls.
@ -174,6 +160,6 @@ service ScmBlockLocationProtocolService {
/** /**
* Gets the scmInfo from SCM. * Gets the scmInfo from SCM.
*/ */
rpc getScmInfo(GetScmInfoRequestProto) rpc getScmInfo(hadoop.hdfs.ozone.GetScmInfoRequestProto)
returns (GetScmInfoRespsonseProto); returns (hadoop.hdfs.ozone.GetScmInfoRespsonseProto);
} }

View File

@ -211,4 +211,10 @@ service StorageContainerLocationProtocolService {
*/ */
rpc allocatePipeline(PipelineRequestProto) rpc allocatePipeline(PipelineRequestProto)
returns (PipelineResponseProto); returns (PipelineResponseProto);
/**
* Returns information about SCM.
*/
rpc getScmInfo(hadoop.hdfs.ozone.GetScmInfoRequestProto)
returns (hadoop.hdfs.ozone.GetScmInfoRespsonseProto);
} }

View File

@ -22,6 +22,7 @@
import com.google.protobuf.ServiceException; import com.google.protobuf.ServiceException;
import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.ozone.common.BlockGroup; import org.apache.hadoop.ozone.common.BlockGroup;
import org.apache.hadoop.ozone.protocol.proto.OzoneProtos;
import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.DeleteKeyBlocksResultProto; import org.apache.hadoop.ozone.protocol.proto.ScmBlockLocationProtocolProtos.DeleteKeyBlocksResultProto;
import org.apache.hadoop.scm.container.common.helpers.AllocatedBlock; import org.apache.hadoop.scm.container.common.helpers.AllocatedBlock;
import org.apache.hadoop.ozone.common.DeleteBlockGroupResult; import org.apache.hadoop.ozone.common.DeleteBlockGroupResult;
@ -44,10 +45,6 @@
.ScmBlockLocationProtocolProtos.GetScmBlockLocationsResponseProto; .ScmBlockLocationProtocolProtos.GetScmBlockLocationsResponseProto;
import org.apache.hadoop.ozone.protocol.proto import org.apache.hadoop.ozone.protocol.proto
.ScmBlockLocationProtocolProtos.ScmLocatedBlockProto; .ScmBlockLocationProtocolProtos.ScmLocatedBlockProto;
import org.apache.hadoop.ozone.protocol.proto
.ScmBlockLocationProtocolProtos.GetScmInfoRequestProto;
import org.apache.hadoop.ozone.protocol.proto
.ScmBlockLocationProtocolProtos.GetScmInfoRespsonseProto;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@ -155,15 +152,16 @@ public DeleteScmKeyBlocksResponseProto deleteScmKeyBlocks(
} }
@Override @Override
public GetScmInfoRespsonseProto getScmInfo(RpcController controller, public OzoneProtos.GetScmInfoRespsonseProto getScmInfo(
GetScmInfoRequestProto req) throws ServiceException { RpcController controller, OzoneProtos.GetScmInfoRequestProto req)
throws ServiceException {
ScmInfo scmInfo; ScmInfo scmInfo;
try { try {
scmInfo = impl.getScmInfo(); scmInfo = impl.getScmInfo();
} catch (IOException ex) { } catch (IOException ex) {
throw new ServiceException(ex); throw new ServiceException(ex);
} }
return GetScmInfoRespsonseProto.newBuilder() return OzoneProtos.GetScmInfoRespsonseProto.newBuilder()
.setClusterId(scmInfo.getClusterId()) .setClusterId(scmInfo.getClusterId())
.setScmId(scmInfo.getScmId()) .setScmId(scmInfo.getScmId())
.build(); .build();

View File

@ -29,6 +29,7 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneProtos;
import org.apache.hadoop.ozone.protocol.proto import org.apache.hadoop.ozone.protocol.proto
.StorageContainerLocationProtocolProtos; .StorageContainerLocationProtocolProtos;
import org.apache.hadoop.scm.ScmInfo;
import org.apache.hadoop.scm.container.common.helpers.ContainerInfo; import org.apache.hadoop.scm.container.common.helpers.ContainerInfo;
import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol; import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol;
@ -195,4 +196,20 @@ public PipelineResponseProto allocatePipeline(
// TODO : Wiring this up requires one more patch. // TODO : Wiring this up requires one more patch.
return null; return null;
} }
@Override
public OzoneProtos.GetScmInfoRespsonseProto getScmInfo(
RpcController controller, OzoneProtos.GetScmInfoRequestProto req)
throws ServiceException {
try {
ScmInfo scmInfo = impl.getScmInfo();
return OzoneProtos.GetScmInfoRespsonseProto.newBuilder()
.setClusterId(scmInfo.getClusterId())
.setScmId(scmInfo.getScmId())
.build();
} catch (IOException ex) {
throw new ServiceException(ex);
}
}
} }