You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by el...@apache.org on 2019/10/13 06:52:32 UTC
[hadoop-ozone] 04/04: HDDS-1737. Add Volume check in KeyManager and
File Operations.
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 322b3c633f8b48e81a7dc1b8334c0d7fee503f7d
Author: cxorm <li...@gmail.com>
AuthorDate: Thu Oct 10 16:16:45 2019 +0800
HDDS-1737. Add Volume check in KeyManager and File Operations.
---
.../ozone/om/request/file/OMDirectoryCreateRequest.java | 16 ++++------------
.../ozone/om/request/file/OMFileCreateRequest.java | 11 +++--------
.../hadoop/ozone/om/request/key/OMKeyDeleteRequest.java | 11 ++++-------
.../hadoop/ozone/om/request/key/OMKeyRenameRequest.java | 6 ++----
4 files changed, 13 insertions(+), 31 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..9b451e9 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
@@ -62,9 +62,8 @@ 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.BUCKET_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,16 +138,7 @@ 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.
-
- OmBucketInfo omBucketInfo = omMetadataManager.getBucketTable().get(
- omMetadataManager.getBucketKey(volumeName, bucketName));
-
- if (omBucketInfo == null) {
- throw new OMException("Bucket not found " + bucketName,
- BUCKET_NOT_FOUND);
- }
+ validateBucketAndVolume(omMetadataManager, volumeName, bucketName);
// Need to check if any files exist in the given path, if they exist we
// cannot create a directory with the given key.
@@ -156,6 +146,8 @@ public class OMDirectoryCreateRequest extends OMKeyRequest {
OMFileRequest.verifyFilesInPath(omMetadataManager,
volumeName, bucketName, keyName, Paths.get(keyName));
+ OmBucketInfo omBucketInfo = omMetadataManager.getBucketTable().get(
+ omMetadataManager.getBucketKey(volumeName, bucketName));
OmKeyInfo dirKeyInfo = null;
if (omDirectoryResult == FILE_EXISTS ||
omDirectoryResult == FILE_EXISTS_IN_GIVENPATH) {
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
index 20b5174..98547c0 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
@@ -183,14 +183,7 @@ public class OMFileCreateRequest extends OMKeyRequest {
acquiredLock = omMetadataManager.getLock().acquireWriteLock(BUCKET_LOCK,
volumeName, bucketName);
- OmBucketInfo bucketInfo =
- omMetadataManager.getBucketTable().get(
- omMetadataManager.getBucketKey(volumeName, bucketName));
-
- if (bucketInfo == null) {
- throw new OMException("Bucket " + bucketName + " not found",
- OMException.ResultCodes.BUCKET_NOT_FOUND);
- }
+ validateBucketAndVolume(omMetadataManager, volumeName, bucketName);
if (keyName.length() == 0) {
// Check if this is the root of the filesystem.
@@ -255,6 +248,8 @@ public class OMFileCreateRequest extends OMKeyRequest {
}
// do open key
+ OmBucketInfo bucketInfo = omMetadataManager.getBucketTable().get(
+ omMetadataManager.getBucketKey(volumeName, bucketName));
encryptionInfo = getFileEncryptionInfo(ozoneManager, bucketInfo);
omKeyInfo = prepareKeyInfo(omMetadataManager, keyArgs,
omMetadataManager.getOzoneKey(volumeName, bucketName,
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..9a0b793 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
@@ -47,8 +47,7 @@ import org.apache.hadoop.util.Time;
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.KEY_NOT_FOUND;
import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK;
/**
@@ -117,12 +116,10 @@ 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);
+ // Validate bucket and volume exists or not.
+ validateBucketAndVolume(omMetadataManager, volumeName, bucketName);
+ 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..3ae2606 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
@@ -123,10 +123,8 @@ 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.
+ // Validate bucket and volume exists or not.
+ validateBucketAndVolume(omMetadataManager, volumeName, bucketName);
// fromKeyName should exist
String fromKey = omMetadataManager.getOzoneKey(
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-commits-help@hadoop.apache.org