http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/KeySpaceManagerProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/KeySpaceManagerProtocolServerSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/KeySpaceManagerProtocolServerSideTranslatorPB.java deleted file mode 100644 index 6321923..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/KeySpaceManagerProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,539 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import com.google.common.collect.Lists; -import com.google.protobuf.RpcController; -import com.google.protobuf.ServiceException; -import org.apache.hadoop.ozone.ksm.helpers.KsmBucketArgs; -import org.apache.hadoop.ozone.ksm.helpers.KsmBucketInfo; -import org.apache.hadoop.ozone.ksm.helpers.KsmKeyArgs; -import org.apache.hadoop.ozone.ksm.helpers.KsmKeyInfo; -import org.apache.hadoop.ozone.ksm.helpers.KsmKeyLocationInfo; -import org.apache.hadoop.ozone.ksm.helpers.KsmVolumeArgs; -import org.apache.hadoop.ozone.ksm.helpers.OpenKeySession; -import org.apache.hadoop.ozone.ksm.helpers.ServiceInfo; -import org.apache.hadoop.ozone.ksm.protocol.KeySpaceManagerProtocol; -import org.apache.hadoop.ozone.ksm.protocolPB.KeySpaceManagerProtocolPB; -import org.apache.hadoop.ozone.ksm.exceptions.KSMException; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.AllocateBlockRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.AllocateBlockResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CommitKeyRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CommitKeyResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CreateBucketRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CreateBucketResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.InfoBucketRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.InfoBucketResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.SetBucketPropertyRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.SetBucketPropertyResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.DeleteBucketRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.DeleteBucketResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CreateVolumeRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CreateVolumeResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.LocateKeyRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.LocateKeyResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.KeyArgs; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.SetVolumePropertyRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.SetVolumePropertyResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CheckVolumeAccessRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.CheckVolumeAccessResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.InfoVolumeRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.InfoVolumeResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.DeleteVolumeRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.DeleteVolumeResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListVolumeRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListVolumeResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListBucketsRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListBucketsResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListKeysRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ListKeysResponse; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.Status; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ServiceListRequest; -import org.apache.hadoop.ozone.protocol.proto - .KeySpaceManagerProtocolProtos.ServiceListResponse; -import org.apache.hadoop.ozone.protocol.proto.OzoneProtos; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - -/** - * This class is the server-side translator that forwards requests received on - * {@link org.apache.hadoop.ozone.ksm.protocolPB.KeySpaceManagerProtocolPB} - * to the KeySpaceManagerService server implementation. - */ -public class KeySpaceManagerProtocolServerSideTranslatorPB implements - KeySpaceManagerProtocolPB { - private static final Logger LOG = LoggerFactory - .getLogger(KeySpaceManagerProtocolServerSideTranslatorPB.class); - private final KeySpaceManagerProtocol impl; - - /** - * Constructs an instance of the server handler. - * - * @param impl KeySpaceManagerProtocolPB - */ - public KeySpaceManagerProtocolServerSideTranslatorPB( - KeySpaceManagerProtocol impl) { - this.impl = impl; - } - - // Convert and exception to corresponding status code - private Status exceptionToResponseStatus(IOException ex) { - if (ex instanceof KSMException) { - KSMException ksmException = (KSMException)ex; - switch (ksmException.getResult()) { - case FAILED_VOLUME_ALREADY_EXISTS: - return Status.VOLUME_ALREADY_EXISTS; - case FAILED_TOO_MANY_USER_VOLUMES: - return Status.USER_TOO_MANY_VOLUMES; - case FAILED_VOLUME_NOT_FOUND: - return Status.VOLUME_NOT_FOUND; - case FAILED_VOLUME_NOT_EMPTY: - return Status.VOLUME_NOT_EMPTY; - case FAILED_USER_NOT_FOUND: - return Status.USER_NOT_FOUND; - case FAILED_BUCKET_ALREADY_EXISTS: - return Status.BUCKET_ALREADY_EXISTS; - case FAILED_BUCKET_NOT_FOUND: - return Status.BUCKET_NOT_FOUND; - case FAILED_BUCKET_NOT_EMPTY: - return Status.BUCKET_NOT_EMPTY; - case FAILED_KEY_ALREADY_EXISTS: - return Status.KEY_ALREADY_EXISTS; - case FAILED_KEY_NOT_FOUND: - return Status.KEY_NOT_FOUND; - default: - return Status.INTERNAL_ERROR; - } - } else { - if (LOG.isDebugEnabled()) { - LOG.debug("Unknown error occurs", ex); - } - return Status.INTERNAL_ERROR; - } - } - - @Override - public CreateVolumeResponse createVolume( - RpcController controller, CreateVolumeRequest request) - throws ServiceException { - CreateVolumeResponse.Builder resp = CreateVolumeResponse.newBuilder(); - resp.setStatus(Status.OK); - try { - impl.createVolume(KsmVolumeArgs.getFromProtobuf(request.getVolumeInfo())); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public SetVolumePropertyResponse setVolumeProperty( - RpcController controller, SetVolumePropertyRequest request) - throws ServiceException { - SetVolumePropertyResponse.Builder resp = - SetVolumePropertyResponse.newBuilder(); - resp.setStatus(Status.OK); - String volume = request.getVolumeName(); - - try { - if (request.hasQuotaInBytes()) { - long quota = request.getQuotaInBytes(); - impl.setQuota(volume, quota); - } else { - String owner = request.getOwnerName(); - impl.setOwner(volume, owner); - } - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public CheckVolumeAccessResponse checkVolumeAccess( - RpcController controller, CheckVolumeAccessRequest request) - throws ServiceException { - CheckVolumeAccessResponse.Builder resp = - CheckVolumeAccessResponse.newBuilder(); - resp.setStatus(Status.OK); - try { - boolean access = impl.checkVolumeAccess(request.getVolumeName(), - request.getUserAcl()); - // if no access, set the response status as access denied - if (!access) { - resp.setStatus(Status.ACCESS_DENIED); - } - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - - return resp.build(); - } - - @Override - public InfoVolumeResponse infoVolume( - RpcController controller, InfoVolumeRequest request) - throws ServiceException { - InfoVolumeResponse.Builder resp = InfoVolumeResponse.newBuilder(); - resp.setStatus(Status.OK); - String volume = request.getVolumeName(); - try { - KsmVolumeArgs ret = impl.getVolumeInfo(volume); - resp.setVolumeInfo(ret.getProtobuf()); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public DeleteVolumeResponse deleteVolume( - RpcController controller, DeleteVolumeRequest request) - throws ServiceException { - DeleteVolumeResponse.Builder resp = DeleteVolumeResponse.newBuilder(); - resp.setStatus(Status.OK); - try { - impl.deleteVolume(request.getVolumeName()); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public ListVolumeResponse listVolumes( - RpcController controller, ListVolumeRequest request) - throws ServiceException { - ListVolumeResponse.Builder resp = ListVolumeResponse.newBuilder(); - List<KsmVolumeArgs> result = Lists.newArrayList(); - try { - if (request.getScope() - == ListVolumeRequest.Scope.VOLUMES_BY_USER) { - result = impl.listVolumeByUser(request.getUserName(), - request.getPrefix(), request.getPrevKey(), request.getMaxKeys()); - } else if (request.getScope() - == ListVolumeRequest.Scope.VOLUMES_BY_CLUSTER) { - result = impl.listAllVolumes(request.getPrefix(), request.getPrevKey(), - request.getMaxKeys()); - } - - if (result == null) { - throw new ServiceException("Failed to get volumes for given scope " - + request.getScope()); - } - - result.forEach(item -> resp.addVolumeInfo(item.getProtobuf())); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public CreateBucketResponse createBucket( - RpcController controller, CreateBucketRequest - request) throws ServiceException { - CreateBucketResponse.Builder resp = - CreateBucketResponse.newBuilder(); - try { - impl.createBucket(KsmBucketInfo.getFromProtobuf( - request.getBucketInfo())); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public InfoBucketResponse infoBucket( - RpcController controller, InfoBucketRequest request) - throws ServiceException { - InfoBucketResponse.Builder resp = - InfoBucketResponse.newBuilder(); - try { - KsmBucketInfo ksmBucketInfo = impl.getBucketInfo( - request.getVolumeName(), request.getBucketName()); - resp.setStatus(Status.OK); - resp.setBucketInfo(ksmBucketInfo.getProtobuf()); - } catch(IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public LocateKeyResponse createKey( - RpcController controller, LocateKeyRequest request - ) throws ServiceException { - LocateKeyResponse.Builder resp = - LocateKeyResponse.newBuilder(); - try { - KeyArgs keyArgs = request.getKeyArgs(); - OzoneProtos.ReplicationType type = - keyArgs.hasType()? keyArgs.getType() : null; - OzoneProtos.ReplicationFactor factor = - keyArgs.hasFactor()? keyArgs.getFactor() : null; - KsmKeyArgs ksmKeyArgs = new KsmKeyArgs.Builder() - .setVolumeName(keyArgs.getVolumeName()) - .setBucketName(keyArgs.getBucketName()) - .setKeyName(keyArgs.getKeyName()) - .setDataSize(keyArgs.getDataSize()) - .setType(type) - .setFactor(factor) - .build(); - if (keyArgs.hasDataSize()) { - ksmKeyArgs.setDataSize(keyArgs.getDataSize()); - } else { - ksmKeyArgs.setDataSize(0); - } - OpenKeySession openKey = impl.openKey(ksmKeyArgs); - resp.setKeyInfo(openKey.getKeyInfo().getProtobuf()); - resp.setID(openKey.getId()); - resp.setOpenVersion(openKey.getOpenVersion()); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public LocateKeyResponse lookupKey( - RpcController controller, LocateKeyRequest request - ) throws ServiceException { - LocateKeyResponse.Builder resp = - LocateKeyResponse.newBuilder(); - try { - KeyArgs keyArgs = request.getKeyArgs(); - KsmKeyArgs ksmKeyArgs = new KsmKeyArgs.Builder() - .setVolumeName(keyArgs.getVolumeName()) - .setBucketName(keyArgs.getBucketName()) - .setKeyName(keyArgs.getKeyName()) - .build(); - KsmKeyInfo keyInfo = impl.lookupKey(ksmKeyArgs); - resp.setKeyInfo(keyInfo.getProtobuf()); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public SetBucketPropertyResponse setBucketProperty( - RpcController controller, SetBucketPropertyRequest request) - throws ServiceException { - SetBucketPropertyResponse.Builder resp = - SetBucketPropertyResponse.newBuilder(); - try { - impl.setBucketProperty(KsmBucketArgs.getFromProtobuf( - request.getBucketArgs())); - resp.setStatus(Status.OK); - } catch(IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public LocateKeyResponse deleteKey(RpcController controller, - LocateKeyRequest request) throws ServiceException { - LocateKeyResponse.Builder resp = - LocateKeyResponse.newBuilder(); - try { - KeyArgs keyArgs = request.getKeyArgs(); - KsmKeyArgs ksmKeyArgs = new KsmKeyArgs.Builder() - .setVolumeName(keyArgs.getVolumeName()) - .setBucketName(keyArgs.getBucketName()) - .setKeyName(keyArgs.getKeyName()) - .build(); - impl.deleteKey(ksmKeyArgs); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public DeleteBucketResponse deleteBucket( - RpcController controller, DeleteBucketRequest request) - throws ServiceException { - DeleteBucketResponse.Builder resp = DeleteBucketResponse.newBuilder(); - resp.setStatus(Status.OK); - try { - impl.deleteBucket(request.getVolumeName(), request.getBucketName()); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public ListBucketsResponse listBuckets( - RpcController controller, ListBucketsRequest request) - throws ServiceException { - ListBucketsResponse.Builder resp = - ListBucketsResponse.newBuilder(); - try { - List<KsmBucketInfo> buckets = impl.listBuckets( - request.getVolumeName(), - request.getStartKey(), - request.getPrefix(), - request.getCount()); - for(KsmBucketInfo bucket : buckets) { - resp.addBucketInfo(bucket.getProtobuf()); - } - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public ListKeysResponse listKeys(RpcController controller, - ListKeysRequest request) throws ServiceException { - ListKeysResponse.Builder resp = - ListKeysResponse.newBuilder(); - try { - List<KsmKeyInfo> keys = impl.listKeys( - request.getVolumeName(), - request.getBucketName(), - request.getStartKey(), - request.getPrefix(), - request.getCount()); - for(KsmKeyInfo key : keys) { - resp.addKeyInfo(key.getProtobuf()); - } - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public CommitKeyResponse commitKey(RpcController controller, - CommitKeyRequest request) throws ServiceException { - CommitKeyResponse.Builder resp = - CommitKeyResponse.newBuilder(); - try { - KeyArgs keyArgs = request.getKeyArgs(); - OzoneProtos.ReplicationType type = - keyArgs.hasType()? keyArgs.getType() : null; - OzoneProtos.ReplicationFactor factor = - keyArgs.hasFactor()? keyArgs.getFactor() : null; - KsmKeyArgs ksmKeyArgs = new KsmKeyArgs.Builder() - .setVolumeName(keyArgs.getVolumeName()) - .setBucketName(keyArgs.getBucketName()) - .setKeyName(keyArgs.getKeyName()) - .setDataSize(keyArgs.getDataSize()) - .setType(type) - .setFactor(factor) - .build(); - int id = request.getClientID(); - impl.commitKey(ksmKeyArgs, id); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public AllocateBlockResponse allocateBlock(RpcController controller, - AllocateBlockRequest request) throws ServiceException { - AllocateBlockResponse.Builder resp = - AllocateBlockResponse.newBuilder(); - try { - KeyArgs keyArgs = request.getKeyArgs(); - OzoneProtos.ReplicationType type = - keyArgs.hasType()? keyArgs.getType() : null; - OzoneProtos.ReplicationFactor factor = - keyArgs.hasFactor()? keyArgs.getFactor() : null; - KsmKeyArgs ksmKeyArgs = new KsmKeyArgs.Builder() - .setVolumeName(keyArgs.getVolumeName()) - .setBucketName(keyArgs.getBucketName()) - .setKeyName(keyArgs.getKeyName()) - .setType(type) - .setFactor(factor) - .build(); - int id = request.getClientID(); - KsmKeyLocationInfo newLocation = impl.allocateBlock(ksmKeyArgs, id); - resp.setKeyLocation(newLocation.getProtobuf()); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } - - @Override - public ServiceListResponse getServiceList(RpcController controller, - ServiceListRequest request) throws ServiceException { - ServiceListResponse.Builder resp = ServiceListResponse.newBuilder(); - try { - resp.addAllServiceInfo(impl.getServiceList().stream() - .map(ServiceInfo::getProtobuf) - .collect(Collectors.toList())); - resp.setStatus(Status.OK); - } catch (IOException e) { - resp.setStatus(exceptionToResponseStatus(e)); - } - return resp.build(); - } -}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/ScmBlockLocationProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/ScmBlockLocationProtocolServerSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/ScmBlockLocationProtocolServerSideTranslatorPB.java deleted file mode 100644 index 2ab11ba..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/ScmBlockLocationProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import com.google.common.collect.Sets; -import com.google.protobuf.RpcController; -import com.google.protobuf.ServiceException; -import org.apache.hadoop.classification.InterfaceAudience; -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.scm.container.common.helpers.AllocatedBlock; -import org.apache.hadoop.ozone.common.DeleteBlockGroupResult; -import org.apache.hadoop.scm.ScmInfo; -import org.apache.hadoop.scm.protocol.ScmBlockLocationProtocol; -import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol; -import org.apache.hadoop.scm.protocolPB.ScmBlockLocationProtocolPB; -import org.apache.hadoop.scm.protocolPB.StorageContainerLocationProtocolPB; -import org.apache.hadoop.ozone.protocol.proto - .ScmBlockLocationProtocolProtos.AllocateScmBlockRequestProto; -import org.apache.hadoop.ozone.protocol.proto - .ScmBlockLocationProtocolProtos.AllocateScmBlockResponseProto; -import org.apache.hadoop.ozone.protocol.proto - .ScmBlockLocationProtocolProtos.DeleteScmKeyBlocksRequestProto; -import org.apache.hadoop.ozone.protocol.proto - .ScmBlockLocationProtocolProtos.DeleteScmKeyBlocksResponseProto; -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.ScmLocatedBlockProto; - -import java.io.IOException; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * This class is the server-side translator that forwards requests received on - * {@link StorageContainerLocationProtocolPB} to the - * {@link StorageContainerLocationProtocol} server implementation. - */ [email protected] -public final class ScmBlockLocationProtocolServerSideTranslatorPB - implements ScmBlockLocationProtocolPB { - - private final ScmBlockLocationProtocol impl; - - /** - * Creates a new ScmBlockLocationProtocolServerSideTranslatorPB. - * - * @param impl {@link ScmBlockLocationProtocol} server implementation - */ - public ScmBlockLocationProtocolServerSideTranslatorPB( - ScmBlockLocationProtocol impl) throws IOException { - this.impl = impl; - } - - - @Override - public GetScmBlockLocationsResponseProto getScmBlockLocations( - RpcController controller, GetScmBlockLocationsRequestProto req) - throws ServiceException { - Set<String> keys = Sets.newLinkedHashSetWithExpectedSize( - req.getKeysCount()); - for (String key : req.getKeysList()) { - keys.add(key); - } - final Set<AllocatedBlock> blocks; - try { - blocks = impl.getBlockLocations(keys); - } catch (IOException ex) { - throw new ServiceException(ex); - } - GetScmBlockLocationsResponseProto.Builder resp = - GetScmBlockLocationsResponseProto.newBuilder(); - for (AllocatedBlock block: blocks) { - ScmLocatedBlockProto.Builder locatedBlock = - ScmLocatedBlockProto.newBuilder() - .setKey(block.getKey()) - .setPipeline(block.getPipeline().getProtobufMessage()); - resp.addLocatedBlocks(locatedBlock.build()); - } - return resp.build(); - } - - @Override - public AllocateScmBlockResponseProto allocateScmBlock( - RpcController controller, AllocateScmBlockRequestProto request) - throws ServiceException { - try { - AllocatedBlock allocatedBlock = - impl.allocateBlock(request.getSize(), request.getType(), - request.getFactor(), request.getOwner()); - if (allocatedBlock != null) { - return - AllocateScmBlockResponseProto.newBuilder() - .setKey(allocatedBlock.getKey()) - .setPipeline(allocatedBlock.getPipeline().getProtobufMessage()) - .setCreateContainer(allocatedBlock.getCreateContainer()) - .setErrorCode(AllocateScmBlockResponseProto.Error.success) - .build(); - } else { - return AllocateScmBlockResponseProto.newBuilder() - .setErrorCode(AllocateScmBlockResponseProto.Error.unknownFailure) - .build(); - } - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public DeleteScmKeyBlocksResponseProto deleteScmKeyBlocks( - RpcController controller, DeleteScmKeyBlocksRequestProto req) - throws ServiceException { - DeleteScmKeyBlocksResponseProto.Builder resp = - DeleteScmKeyBlocksResponseProto.newBuilder(); - try { - List<BlockGroup> infoList = req.getKeyBlocksList().stream() - .map(BlockGroup::getFromProto).collect(Collectors.toList()); - final List<DeleteBlockGroupResult> results = - impl.deleteKeyBlocks(infoList); - for (DeleteBlockGroupResult result: results) { - DeleteKeyBlocksResultProto.Builder deleteResult = - DeleteKeyBlocksResultProto - .newBuilder() - .setObjectKey(result.getObjectKey()) - .addAllBlockResults(result.getBlockResultProtoList()); - resp.addResults(deleteResult.build()); - } - } catch (IOException ex) { - throw new ServiceException(ex); - } - return resp.build(); - } - - @Override - public OzoneProtos.GetScmInfoRespsonseProto getScmInfo( - RpcController controller, OzoneProtos.GetScmInfoRequestProto req) - throws ServiceException { - ScmInfo scmInfo; - try { - scmInfo = impl.getScmInfo(); - } catch (IOException ex) { - throw new ServiceException(ex); - } - return OzoneProtos.GetScmInfoRespsonseProto.newBuilder() - .setClusterId(scmInfo.getClusterId()) - .setScmId(scmInfo.getScmId()) - .build(); - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolClientSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolClientSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolClientSideTranslatorPB.java deleted file mode 100644 index 50d4fbb..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolClientSideTranslatorPB.java +++ /dev/null @@ -1,195 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import com.google.protobuf.RpcController; -import com.google.protobuf.ServiceException; -import org.apache.hadoop.hdfs.protocol.DatanodeID; -import org.apache.hadoop.ipc.ProtobufHelper; -import org.apache.hadoop.ipc.ProtocolTranslator; -import org.apache.hadoop.ipc.RPC; -import org.apache.hadoop.ozone.protocol.StorageContainerDatanodeProtocol; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsRequestProto; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.ReportState; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.SCMHeartbeatRequestProto; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.SCMHeartbeatResponseProto; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.SCMNodeReport; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.SCMRegisterRequestProto; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerDatanodeProtocolProtos.SCMRegisteredCmdResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMVersionRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMVersionResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerBlocksDeletionACKProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerBlocksDeletionACKResponseProto; - -import java.io.Closeable; -import java.io.IOException; - -/** - * This class is the client-side translator to translate the requests made on - * the {@link StorageContainerDatanodeProtocol} interface to the RPC server - * implementing {@link StorageContainerDatanodeProtocolPB}. - */ -public class StorageContainerDatanodeProtocolClientSideTranslatorPB - implements StorageContainerDatanodeProtocol, ProtocolTranslator, Closeable { - - /** - * RpcController is not used and hence is set to null. - */ - private static final RpcController NULL_RPC_CONTROLLER = null; - private final StorageContainerDatanodeProtocolPB rpcProxy; - - /** - * Constructs a Client side interface that calls into SCM datanode protocol. - * - * @param rpcProxy - Proxy for RPC. - */ - public StorageContainerDatanodeProtocolClientSideTranslatorPB( - StorageContainerDatanodeProtocolPB rpcProxy) { - this.rpcProxy = rpcProxy; - } - - /** - * Closes this stream and releases any system resources associated with it. If - * the stream is already closed then invoking this method has no effect. - * <p> - * <p> As noted in {@link AutoCloseable#close()}, cases where the close may - * fail require careful attention. It is strongly advised to relinquish the - * underlying resources and to internally <em>mark</em> the {@code Closeable} - * as closed, prior to throwing the {@code IOException}. - * - * @throws IOException if an I/O error occurs - */ - @Override - public void close() throws IOException { - RPC.stopProxy(rpcProxy); - } - - /** - * Return the proxy object underlying this protocol translator. - * - * @return the proxy object underlying this protocol translator. - */ - @Override - public Object getUnderlyingProxyObject() { - return rpcProxy; - } - - /** - * Returns SCM version. - * - * @param unused - set to null and unused. - * @return Version info. - */ - @Override - public SCMVersionResponseProto getVersion(SCMVersionRequestProto - unused) throws IOException { - SCMVersionRequestProto request = - SCMVersionRequestProto.newBuilder().build(); - final SCMVersionResponseProto response; - try { - response = rpcProxy.getVersion(NULL_RPC_CONTROLLER, request); - } catch (ServiceException ex) { - throw ProtobufHelper.getRemoteException(ex); - } - return response; - } - - /** - * Send by datanode to SCM. - * - * @param datanodeID - DatanodeID - * @param nodeReport - node report - * @throws IOException - */ - - @Override - public SCMHeartbeatResponseProto sendHeartbeat(DatanodeID datanodeID, - SCMNodeReport nodeReport, ReportState reportState) throws IOException { - SCMHeartbeatRequestProto.Builder req = SCMHeartbeatRequestProto - .newBuilder(); - req.setDatanodeID(datanodeID.getProtoBufMessage()); - req.setNodeReport(nodeReport); - req.setContainerReportState(reportState); - final SCMHeartbeatResponseProto resp; - try { - resp = rpcProxy.sendHeartbeat(NULL_RPC_CONTROLLER, req.build()); - } catch (ServiceException e) { - throw ProtobufHelper.getRemoteException(e); - } - return resp; - } - - /** - * Register Datanode. - * - * @param datanodeID - DatanodID. - * @return SCM Command. - */ - @Override - public SCMRegisteredCmdResponseProto register(DatanodeID datanodeID, - String[] scmAddresses) throws IOException { - SCMRegisterRequestProto.Builder req = - SCMRegisterRequestProto.newBuilder(); - req.setDatanodeID(datanodeID.getProtoBufMessage()); - final SCMRegisteredCmdResponseProto response; - try { - response = rpcProxy.register(NULL_RPC_CONTROLLER, req.build()); - } catch (ServiceException e) { - throw ProtobufHelper.getRemoteException(e); - } - return response; - } - - /** - * Send a container report. - * - * @param reports -- Container report - * @return HeartbeatRespose.nullcommand. - * @throws IOException - */ - @Override - public ContainerReportsResponseProto sendContainerReport( - ContainerReportsRequestProto reports) throws IOException { - final ContainerReportsResponseProto resp; - try { - resp = rpcProxy.sendContainerReport(NULL_RPC_CONTROLLER, reports); - } catch (ServiceException e) { - throw ProtobufHelper.getRemoteException(e); - } - return resp; - } - - @Override - public ContainerBlocksDeletionACKResponseProto sendContainerBlocksDeletionACK( - ContainerBlocksDeletionACKProto deletedBlocks) throws IOException { - final ContainerBlocksDeletionACKResponseProto resp; - try { - resp = rpcProxy.sendContainerBlocksDeletionACK(NULL_RPC_CONTROLLER, - deletedBlocks); - } catch (ServiceException e) { - throw ProtobufHelper.getRemoteException(e); - } - return resp; - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolPB.java deleted file mode 100644 index 3e6f392..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolPB.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import org.apache.hadoop.ipc.ProtocolInfo; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.StorageContainerDatanodeProtocolService; - -/** - * Protocol used from a datanode to StorageContainerManager. This extends - * the Protocol Buffers service interface to add Hadoop-specific annotations. - */ - -@ProtocolInfo(protocolName = - "org.apache.hadoop.ozone.protocol.StorageContainerDatanodeProtocol", - protocolVersion = 1) -public interface StorageContainerDatanodeProtocolPB extends - StorageContainerDatanodeProtocolService.BlockingInterface { -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java deleted file mode 100644 index 2fd7038..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import com.google.protobuf.RpcController; -import com.google.protobuf.ServiceException; -import org.apache.hadoop.hdfs.protocol.DatanodeID; -import org.apache.hadoop.ozone.protocol.StorageContainerDatanodeProtocol; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMHeartbeatRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMHeartbeatResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerBlocksDeletionACKResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerBlocksDeletionACKProto; - -import java.io.IOException; - -/** - * This class is the server-side translator that forwards requests received on - * {@link StorageContainerDatanodeProtocolPB} to the {@link - * StorageContainerDatanodeProtocol} server implementation. - */ -public class StorageContainerDatanodeProtocolServerSideTranslatorPB - implements StorageContainerDatanodeProtocolPB { - - private final StorageContainerDatanodeProtocol impl; - - public StorageContainerDatanodeProtocolServerSideTranslatorPB( - StorageContainerDatanodeProtocol impl) { - this.impl = impl; - } - - @Override - public StorageContainerDatanodeProtocolProtos.SCMVersionResponseProto - getVersion(RpcController controller, - StorageContainerDatanodeProtocolProtos.SCMVersionRequestProto request) - throws ServiceException { - try { - return impl.getVersion(request); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public StorageContainerDatanodeProtocolProtos.SCMRegisteredCmdResponseProto - register(RpcController controller, StorageContainerDatanodeProtocolProtos - .SCMRegisterRequestProto request) throws ServiceException { - String[] addressArray = null; - - if (request.hasAddressList()) { - addressArray = request.getAddressList().getAddressListList() - .toArray(new String[0]); - } - - try { - return impl.register(DatanodeID.getFromProtoBuf(request - .getDatanodeID()), addressArray); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public SCMHeartbeatResponseProto - sendHeartbeat(RpcController controller, - SCMHeartbeatRequestProto request) throws ServiceException { - try { - return impl.sendHeartbeat(DatanodeID.getFromProtoBuf(request - .getDatanodeID()), request.getNodeReport(), - request.getContainerReportState()); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public ContainerReportsResponseProto sendContainerReport( - RpcController controller, ContainerReportsRequestProto request) - throws ServiceException { - try { - return impl.sendContainerReport(request); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public ContainerBlocksDeletionACKResponseProto sendContainerBlocksDeletionACK( - RpcController controller, ContainerBlocksDeletionACKProto request) - throws ServiceException { - try { - return impl.sendContainerBlocksDeletionACK(request); - } catch (IOException e) { - throw new ServiceException(e); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerLocationProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerLocationProtocolServerSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerLocationProtocolServerSideTranslatorPB.java deleted file mode 100644 index c8258b9..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerLocationProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,202 +0,0 @@ - -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.ozone.protocolPB; - -import java.io.IOException; -import java.util.EnumSet; -import java.util.List; - -import com.google.protobuf.RpcController; -import com.google.protobuf.ServiceException; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.ozone.protocol.proto.OzoneProtos; -import org.apache.hadoop.ozone.protocol.proto - .StorageContainerLocationProtocolProtos; -import org.apache.hadoop.scm.ScmInfo; -import org.apache.hadoop.scm.container.common.helpers.ContainerInfo; -import org.apache.hadoop.scm.protocol.StorageContainerLocationProtocol; - -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ContainerRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ContainerResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.DeleteContainerRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.DeleteContainerResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ListContainerResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ListContainerRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ObjectStageChangeRequestProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.ObjectStageChangeResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto; -import org.apache.hadoop.ozone.protocol.proto.StorageContainerLocationProtocolProtos.PipelineRequestProto; -import org.apache.hadoop.scm.container.common.helpers.Pipeline; -import org.apache.hadoop.scm.protocolPB.StorageContainerLocationProtocolPB; - -/** - * This class is the server-side translator that forwards requests received on - * {@link StorageContainerLocationProtocolPB} to the - * {@link StorageContainerLocationProtocol} server implementation. - */ [email protected] -public final class StorageContainerLocationProtocolServerSideTranslatorPB - implements StorageContainerLocationProtocolPB { - - private final StorageContainerLocationProtocol impl; - - /** - * Creates a new StorageContainerLocationProtocolServerSideTranslatorPB. - * - * @param impl {@link StorageContainerLocationProtocol} server implementation - */ - public StorageContainerLocationProtocolServerSideTranslatorPB( - StorageContainerLocationProtocol impl) throws IOException { - this.impl = impl; - } - - @Override - public ContainerResponseProto allocateContainer(RpcController unused, - ContainerRequestProto request) throws ServiceException { - try { - Pipeline pipeline = impl.allocateContainer(request.getReplicationType(), - request.getReplicationFactor(), request.getContainerName(), - request.getOwner()); - return ContainerResponseProto.newBuilder() - .setPipeline(pipeline.getProtobufMessage()) - .setErrorCode(ContainerResponseProto.Error.success) - .build(); - - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public GetContainerResponseProto getContainer( - RpcController controller, GetContainerRequestProto request) - throws ServiceException { - try { - Pipeline pipeline = impl.getContainer(request.getContainerName()); - return GetContainerResponseProto.newBuilder() - .setPipeline(pipeline.getProtobufMessage()) - .build(); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public ListContainerResponseProto listContainer(RpcController controller, - ListContainerRequestProto request) throws ServiceException { - try { - String startName = null; - String prefixName = null; - int count = -1; - - // Arguments check. - if (request.hasPrefixName()) { - // End container name is given. - prefixName = request.getPrefixName(); - } - if (request.hasStartName()) { - // End container name is given. - startName = request.getStartName(); - } - - count = request.getCount(); - List<ContainerInfo> containerList = - impl.listContainer(startName, prefixName, count); - ListContainerResponseProto.Builder builder = - ListContainerResponseProto.newBuilder(); - for (ContainerInfo container : containerList) { - builder.addContainers(container.getProtobuf()); - } - return builder.build(); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public DeleteContainerResponseProto deleteContainer( - RpcController controller, DeleteContainerRequestProto request) - throws ServiceException { - try { - impl.deleteContainer(request.getContainerName()); - return DeleteContainerResponseProto.newBuilder().build(); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public StorageContainerLocationProtocolProtos.NodeQueryResponseProto - queryNode(RpcController controller, - StorageContainerLocationProtocolProtos.NodeQueryRequestProto request) - throws ServiceException { - try { - EnumSet<OzoneProtos.NodeState> nodeStateEnumSet = EnumSet.copyOf(request - .getQueryList()); - OzoneProtos.NodePool datanodes = impl.queryNode(nodeStateEnumSet, - request.getScope(), request.getPoolName()); - return StorageContainerLocationProtocolProtos - .NodeQueryResponseProto.newBuilder() - .setDatanodes(datanodes) - .build(); - } catch (Exception e) { - throw new ServiceException(e); - } - } - - @Override - public ObjectStageChangeResponseProto notifyObjectStageChange( - RpcController controller, ObjectStageChangeRequestProto request) - throws ServiceException { - try { - impl.notifyObjectStageChange(request.getType(), request.getName(), - request.getOp(), request.getStage()); - return ObjectStageChangeResponseProto.newBuilder().build(); - } catch (IOException e) { - throw new ServiceException(e); - } - } - - @Override - public PipelineResponseProto allocatePipeline( - RpcController controller, PipelineRequestProto request) - throws ServiceException { - // TODO : Wiring this up requires one more patch. - 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); - } - - } -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/package-info.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/package-info.java deleted file mode 100644 index 860386d..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/protocolPB/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.ozone.protocolPB; - -/** - * This package contains classes for the Protocol Buffers binding of Ozone - * protocols. - */ http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMMXBean.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMMXBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMMXBean.java deleted file mode 100644 index 336ed44..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMMXBean.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.ozone.scm; - -import java.util.Map; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.jmx.ServiceRuntimeInfo; - -/** - * - * This is the JMX management interface for scm information. - */ [email protected] -public interface SCMMXBean extends ServiceRuntimeInfo { - - /** - * Get the SCM RPC server port that used to listen to datanode requests. - * @return SCM datanode RPC server port - */ - String getDatanodeRpcPort(); - - /** - * Get the SCM RPC server port that used to listen to client requests. - * @return SCM client RPC server port - */ - String getClientRpcPort(); - - /** - * Get container report info that includes container IO stats of nodes. - * @return The datanodeUUid to report json string mapping - */ - Map<String, String> getContainerReport(); -} http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMStorage.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMStorage.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMStorage.java deleted file mode 100644 index e5437c7..0000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/SCMStorage.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.ozone.scm; - - -import org.apache.hadoop.conf.OzoneConfiguration; -import org.apache.hadoop.ozone.common.Storage; -import org.apache.hadoop.ozone.protocol.proto.OzoneProtos.NodeType; -import org.apache.hadoop.ozone.web.utils.OzoneUtils; - -import java.io.IOException; -import java.util.Properties; -import java.util.UUID; - -/** - * SCMStorage is responsible for management of the StorageDirectories used by - * the SCM. - */ -public class SCMStorage extends Storage { - - public static final String STORAGE_DIR = "scm"; - public static final String SCM_ID = "scmUuid"; - - /** - * Construct SCMStorage. - * @throws IOException if any directories are inaccessible. - */ - public SCMStorage(OzoneConfiguration conf) throws IOException { - super(NodeType.SCM, OzoneUtils.getOzoneMetaDirPath(conf), STORAGE_DIR); - } - - public void setScmId(String scmId) throws IOException { - if (getState() == StorageState.INITIALIZED) { - throw new IOException("SCM is already initialized."); - } else { - getStorageInfo().setProperty(SCM_ID, scmId); - } - } - - /** - * Retrieves the SCM ID from the version file. - * @return SCM_ID - */ - public String getScmId() { - return getStorageInfo().getProperty(SCM_ID); - } - - @Override - protected Properties getNodeProperties() { - String scmId = getScmId(); - if (scmId == null) { - scmId = UUID.randomUUID().toString(); - } - Properties scmProperties = new Properties(); - scmProperties.setProperty(SCM_ID, scmId); - return scmProperties; - } - -} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
