This is an automated email from the ASF dual-hosted git repository. elek pushed a commit to branch HDDS-1737 in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
commit 6b6424296bfae5e6186fffb6f93365e74ff17ba8 Author: cxorm <lianp...@gmail.com> AuthorDate: Mon Oct 7 23:25:40 2019 +0800 HDDS-1737. Add Volume check in KeyManager and File Operations. --- .../om/request/file/OMDirectoryCreateRequest.java | 11 +++++++---- .../ozone/om/request/key/OMKeyDeleteRequest.java | 21 ++++++++++++++++----- .../ozone/om/request/key/OMKeyRenameRequest.java | 18 ++++++++++++++---- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java index 4b591db..3cb74f9 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java @@ -63,8 +63,9 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue; import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.BUCKET_NOT_FOUND; +import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.VOLUME_NOT_FOUND; import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.FILE_ALREADY_EXISTS; -import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; +import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; import static org.apache.hadoop.ozone.om.request.file.OMFileRequest.OMDirectoryResult.DIRECTORY_EXISTS_IN_GIVENPATH; import static org.apache.hadoop.ozone.om.request.file.OMFileRequest.OMDirectoryResult.FILE_EXISTS_IN_GIVENPATH; import static org.apache.hadoop.ozone.om.request.file.OMFileRequest.OMDirectoryResult.NONE; @@ -139,12 +140,14 @@ public class OMDirectoryCreateRequest extends OMKeyRequest { acquiredLock = omMetadataManager.getLock().acquireWriteLock(BUCKET_LOCK, volumeName, bucketName); - // TODO: Not checking volume exist here, once we have full cache we can - // add volume exist check also. + // Check volume exist. + if (omMetadataManager.getVolumeTable().isExist(volumeName)) { + throw new OMException("Volume not found " + volumeName, + VOLUME_NOT_FOUND); + } OmBucketInfo omBucketInfo = omMetadataManager.getBucketTable().get( omMetadataManager.getBucketKey(volumeName, bucketName)); - if (omBucketInfo == null) { throw new OMException("Bucket not found " + bucketName, BUCKET_NOT_FOUND); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java index ee4b9b2..a81bb8d 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java @@ -49,6 +49,10 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue; import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes .KEY_NOT_FOUND; +import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes + .BUCKET_NOT_FOUND; +import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes + .VOLUME_NOT_FOUND; import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; /** @@ -117,12 +121,19 @@ public class OMKeyDeleteRequest extends OMKeyRequest { acquiredLock = omMetadataManager.getLock().acquireWriteLock(BUCKET_LOCK, volumeName, bucketName); - // Not doing bucket/volume checks here. In this way we can avoid db - // checks for them. - // TODO: Once we have volume/bucket full cache, we can add - // them back, as these checks will be inexpensive at that time. - OmKeyInfo omKeyInfo = omMetadataManager.getKeyTable().get(objectKey); + // Check volume exist. + if (omMetadataManager.getVolumeTable().isExist(volumeName)) { + throw new OMException("Volume not found " + volumeName, + VOLUME_NOT_FOUND); + } + // Check bucket exist. + if (omMetadataManager.getBucketTable().isExist(bucketName)) { + throw new OMException("Bucket not found " + bucketName, + BUCKET_NOT_FOUND); + } + + OmKeyInfo omKeyInfo = omMetadataManager.getKeyTable().get(objectKey); if (omKeyInfo == null) { throw new OMException("Key not found", KEY_NOT_FOUND); } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java index 526473c..744b00b 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java @@ -50,6 +50,9 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheKey; import org.apache.hadoop.hdds.utils.db.cache.CacheValue; import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND; +import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.BUCKET_NOT_FOUND; +import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.VOLUME_NOT_FOUND; + import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; /** @@ -123,10 +126,17 @@ public class OMKeyRenameRequest extends OMKeyRequest { acquiredLock = omMetadataManager.getLock().acquireWriteLock(BUCKET_LOCK, volumeName, bucketName); - // Not doing bucket/volume checks here. In this way we can avoid db - // checks for them. - // TODO: Once we have volume/bucket full cache, we can add - // them back, as these checks will be inexpensive at that time. + // Check volume exist. + if (omMetadataManager.getVolumeTable().isExist(volumeName)) { + throw new OMException("Volume not found " + volumeName, + VOLUME_NOT_FOUND); + } + + // Check bucket exist. + if (omMetadataManager.getBucketTable().isExist(bucketName)) { + throw new OMException("Bucket not found " + bucketName, + BUCKET_NOT_FOUND); + } // fromKeyName should exist String fromKey = omMetadataManager.getOzoneKey( --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-commits-h...@hadoop.apache.org