You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ra...@apache.org on 2022/04/08 11:23:52 UTC
[ozone] branch master updated: HDDS-6545. OzoneManagerUtils#getBucketLayout should not suppress bucket key lookup errors. (#3277)
This is an automated email from the ASF dual-hosted git repository.
rakeshr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 805b5e1d3b HDDS-6545. OzoneManagerUtils#getBucketLayout should not suppress bucket key lookup errors. (#3277)
805b5e1d3b is described below
commit 805b5e1d3b8eaf7ab8aef1c57e2bb17b73dea398
Author: Jyotinder Singh <jy...@gmail.com>
AuthorDate: Fri Apr 8 16:53:47 2022 +0530
HDDS-6545. OzoneManagerUtils#getBucketLayout should not suppress bucket key lookup errors. (#3277)
---
.../om/ratis/TestOzoneManagerRatisRequest.java | 35 ++++++++---
.../org/apache/hadoop/ozone/om/KeyManagerImpl.java | 57 +++++++++---------
.../apache/hadoop/ozone/om/OzoneManagerUtils.java | 70 +++++++++++++---------
.../om/ratis/utils/OzoneManagerRatisUtils.java | 2 +-
.../BucketLayoutAwareOMKeyRequestFactory.java | 7 +--
.../ozone/om/request/file/OMFileRequest.java | 56 ++++++++---------
.../om/request/key/OMKeyDeleteRequestWithFSO.java | 4 +-
.../S3MultipartUploadCompleteRequest.java | 12 ++--
.../S3MultipartUploadCompleteRequestWithFSO.java | 3 +-
.../hadoop/ozone/om/response/OMClientResponse.java | 16 -----
10 files changed, 138 insertions(+), 124 deletions(-)
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java
index 63a4b40383..6e5adda26b 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java
@@ -17,15 +17,18 @@
*/
package org.apache.hadoop.ozone.om.ratis;
+import com.google.common.base.Optional;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
+import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OMConfigKeys;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils;
-import org.apache.hadoop.ozone.om.request.OMClientRequest;
import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
-import org.apache.hadoop.ozone.om.request.s3.multipart.S3MultipartUploadCompleteRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import org.junit.Assert;
import org.junit.Rule;
@@ -35,6 +38,7 @@ import org.mockito.Mockito;
import java.util.ArrayList;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.when;
/**
@@ -58,14 +62,31 @@ public class TestOzoneManagerRatisRequest {
String volumeName = "vol1";
String bucketName = "invalidBuck";
+
+ // Add entry to Volume Table.
+ omMetadataManager.getVolumeTable().addCacheEntry(
+ new CacheKey<>(omMetadataManager.getVolumeKey(volumeName)),
+ new CacheValue<>(
+ Optional.of(
+ OmVolumeArgs.newBuilder()
+ .setVolume(volumeName)
+ .setOwnerName("owner")
+ .setAdminName("admin")
+ .build()), 100L));
+
OzoneManagerProtocolProtos.OMRequest omRequest = OMRequestTestUtils
.createCompleteMPURequest(volumeName, bucketName, "mpuKey", "mpuKeyID",
new ArrayList<>());
- OMClientRequest req =
- OzoneManagerRatisUtils.createClientRequest(omRequest, ozoneManager);
- Assert.assertNotNull(req);
- Assert.assertTrue("Unexpected request on invalid bucket",
- req instanceof S3MultipartUploadCompleteRequest);
+ try {
+ // Request creation flow should throw exception if the bucket associated
+ // with the request doesn't exist.
+ OzoneManagerRatisUtils.createClientRequest(omRequest, ozoneManager);
+ fail("Expected OMException: Bucket not found");
+ } catch (OMException oe) {
+ // Expected exception.
+ Assert.assertEquals(OMException.ResultCodes.BUCKET_NOT_FOUND,
+ oe.getResult());
+ }
}
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
index 03e9361ac5..b9c895726c 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
@@ -120,6 +120,7 @@ import static org.apache.hadoop.ozone.OzoneConsts.OM_KEY_PREFIX;
import static org.apache.hadoop.ozone.OzoneConsts.OZONE_URI_DELIMITER;
import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_DIR_DELETING_SERVICE_INTERVAL;
import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_DIR_DELETING_SERVICE_INTERVAL_DEFAULT;
+import static org.apache.hadoop.ozone.om.OzoneManagerUtils.getBucketLayout;
import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.BUCKET_NOT_FOUND;
import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.DIRECTORY_NOT_FOUND;
import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.FILE_NOT_FOUND;
@@ -403,8 +404,10 @@ public class KeyManagerImpl implements KeyManager {
String keyName) throws IOException {
String keyBytes =
metadataManager.getOzoneKey(volumeName, bucketName, keyName);
+ BucketLayout bucketLayout = getBucketLayout(metadataManager, volumeName,
+ bucketName);
return metadataManager
- .getKeyTable(getBucketLayout(metadataManager, volumeName, bucketName))
+ .getKeyTable(bucketLayout)
.get(keyBytes);
}
@@ -829,8 +832,10 @@ public class KeyManagerImpl implements KeyManager {
try {
OMFileRequest.validateBucket(metadataManager, volume, bucket);
String objectKey = metadataManager.getOzoneKey(volume, bucket, keyName);
+ BucketLayout bucketLayout =
+ getBucketLayout(metadataManager, volume, bucket);
OmKeyInfo keyInfo = metadataManager
- .getKeyTable(getBucketLayout(metadataManager, volume, bucket))
+ .getKeyTable(bucketLayout)
.get(objectKey);
if (keyInfo == null) {
throw new OMException("Key not found. Key:" + objectKey, KEY_NOT_FOUND);
@@ -877,8 +882,10 @@ public class KeyManagerImpl implements KeyManager {
try {
OMFileRequest.validateBucket(metadataManager, volume, bucket);
String objectKey = metadataManager.getOzoneKey(volume, bucket, keyName);
+ BucketLayout bucketLayout =
+ getBucketLayout(metadataManager, volume, bucket);
OmKeyInfo keyInfo = metadataManager
- .getKeyTable(getBucketLayout(metadataManager, volume, bucket))
+ .getKeyTable(bucketLayout)
.get(objectKey);
if (keyInfo == null) {
throw new OMException("Key not found. Key:" + objectKey, KEY_NOT_FOUND);
@@ -922,8 +929,10 @@ public class KeyManagerImpl implements KeyManager {
try {
OMFileRequest.validateBucket(metadataManager, volume, bucket);
String objectKey = metadataManager.getOzoneKey(volume, bucket, keyName);
+ BucketLayout bucketLayout =
+ getBucketLayout(metadataManager, volume, bucket);
OmKeyInfo keyInfo = metadataManager
- .getKeyTable(getBucketLayout(metadataManager, volume, bucket))
+ .getKeyTable(bucketLayout)
.get(objectKey);
if (keyInfo == null) {
throw new OMException("Key not found. Key:" + objectKey, KEY_NOT_FOUND);
@@ -1231,7 +1240,7 @@ public class KeyManagerImpl implements KeyManager {
String dirKeyBytes = metadataManager.getOzoneKey(
volumeName, bucketName, dirKey);
OmKeyInfo dirKeyInfo = metadataManager.getKeyTable(
- getBucketLayout(metadataManager, volumeName, bucketName))
+ getBucketLayout(metadataManager, volumeName, bucketName))
.get(dirKeyBytes);
if (dirKeyInfo != null) {
return new OzoneFileStatus(dirKeyInfo, scmBlockSize, true);
@@ -1717,9 +1726,9 @@ public class KeyManagerImpl implements KeyManager {
metadataManager.getLock().acquireReadLock(BUCKET_LOCK, volumeName,
bucketName);
try {
- iterator = metadataManager.getKeyTable(
- getBucketLayout(metadataManager, volumeName, bucketName))
- .iterator();
+ BucketLayout bucketLayout =
+ getBucketLayout(metadataManager, volumeName, bucketName);
+ iterator = metadataManager.getKeyTable(bucketLayout).iterator();
countEntries = getFilesAndDirsFromCacheWithBucket(volumeName,
bucketName, cacheFileMap, tempCacheDirMap, deletedKeySet,
prefixKeyInDB, seekFileInDB, seekDirInDB, prefixPath, startKey,
@@ -1806,8 +1815,9 @@ public class KeyManagerImpl implements KeyManager {
metadataManager.getLock().acquireReadLock(BUCKET_LOCK, volumeName,
bucketName);
try {
- iterator = metadataManager.getKeyTable(
- getBucketLayout(metadataManager, volumeName, bucketName))
+ BucketLayout bucketLayout =
+ getBucketLayout(metadataManager, volumeName, bucketName);
+ iterator = metadataManager.getKeyTable(bucketLayout)
.iterator();
countEntries = getFilesAndDirsFromCacheWithBucket(volumeName,
bucketName, cacheFileMap, tempCacheDirMap, deletedKeySet,
@@ -1901,13 +1911,15 @@ public class KeyManagerImpl implements KeyManager {
Map<String, OzoneFileStatus> tempCacheDirMap,
Set<String> deletedKeySet, long prefixKeyInDB,
String seekFileInDB, String seekDirInDB, String prefixPath,
- String startKey, int countEntries, long numEntries) {
+ String startKey, int countEntries, long numEntries) throws IOException {
// First under lock obtain both entries from dir/file cache and generate
// entries marked for delete.
+ BucketLayout bucketLayout = getBucketLayout(metadataManager, volumeName,
+ bucketName);
countEntries = listStatusFindFilesInTableCache(cacheFileMap, metadataManager
- .getKeyTable(getBucketLayout(metadataManager, volumeName, bucketName)),
+ .getKeyTable(bucketLayout),
prefixKeyInDB, seekFileInDB, prefixPath, startKey, countEntries,
numEntries, deletedKeySet);
@@ -2338,9 +2350,10 @@ public class KeyManagerImpl implements KeyManager {
parentInfo.getObjectID(), "");
long countEntries = 0;
- Table fileTable = metadataManager.getKeyTable(
+ BucketLayout bucketLayout =
getBucketLayout(metadataManager, parentInfo.getVolumeName(),
- parentInfo.getBucketName()));
+ parentInfo.getBucketName());
+ Table fileTable = metadataManager.getKeyTable(bucketLayout);
TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
iterator = fileTable.iterator();
@@ -2381,20 +2394,4 @@ public class KeyManagerImpl implements KeyManager {
}
return false;
}
-
- private BucketLayout getBucketLayout(OMMetadataManager omMetadataManager,
- String volName, String buckName) {
- if (omMetadataManager == null) {
- return BucketLayout.DEFAULT;
- }
- String buckKey = omMetadataManager.getBucketKey(volName, buckName);
- try {
- OmBucketInfo buckInfo = omMetadataManager.getBucketTable().get(buckKey);
- return buckInfo.getBucketLayout();
- } catch (IOException e) {
- LOG.error("Cannot find the key: " + buckKey);
- }
- return BucketLayout.DEFAULT;
- }
-
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerUtils.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerUtils.java
index b86249dd61..6c33e9e00f 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerUtils.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerUtils.java
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
@@ -61,35 +62,44 @@ public final class OzoneManagerUtils {
* omMetadataManager().getBucketTable().get(buckKey)
*/
- private static OmBucketInfo getOmBucketInfo(OzoneManager ozoneManager,
- String volName, String buckName) {
- String buckKey =
- ozoneManager.getMetadataManager().getBucketKey(volName, buckName);
- OmBucketInfo buckInfo = null;
- try {
- buckInfo =
- ozoneManager.getMetadataManager().getBucketTable().get(buckKey);
- } catch (IOException e) {
- LOG.debug("Failed to get the value for the key: " + buckKey);
- }
- return buckInfo;
+ private static OmBucketInfo getOmBucketInfo(OMMetadataManager metaMgr,
+ String volName, String buckName) throws IOException {
+ String buckKey = metaMgr.getBucketKey(volName, buckName);
+ return metaMgr.getBucketTable().get(buckKey);
+ }
+
+ /**
+ * Get bucket layout for the given volume and bucket name.
+ *
+ * @param metadataManager OMMetadataManager
+ * @param volName volume name
+ * @param buckName bucket name
+ * @return bucket layout
+ * @throws IOException
+ */
+ public static BucketLayout getBucketLayout(OMMetadataManager metadataManager,
+ String volName,
+ String buckName)
+ throws IOException {
+ return getBucketLayout(metadataManager, volName, buckName, new HashSet<>());
}
/**
* Get bucket layout for the given volume and bucket name.
*
- * @param volName volume name
- * @param buckName bucket name
- * @param ozoneManager ozone manager
- * @param visited set contains visited bucket details
+ * @param metadataManager metadata manager
+ * @param volName volume name
+ * @param buckName bucket name
* @return bucket layout
* @throws IOException
*/
- public static BucketLayout getBucketLayout(String volName,
- String buckName, OzoneManager ozoneManager,
- Set<Pair<String, String>> visited) throws IOException {
+ private static BucketLayout getBucketLayout(OMMetadataManager metadataManager,
+ String volName,
+ String buckName,
+ Set<Pair<String, String>> visited)
+ throws IOException {
- OmBucketInfo buckInfo = getOmBucketInfo(ozoneManager, volName, buckName);
+ OmBucketInfo buckInfo = getOmBucketInfo(metadataManager, volName, buckName);
if (buckInfo != null) {
// If this is a link bucket, we fetch the BucketLayout from the
@@ -102,7 +112,7 @@ public final class OzoneManagerUtils {
DETECTED_LOOP_IN_BUCKET_LINKS);
}
OmBucketInfo sourceBuckInfo =
- getOmBucketInfo(ozoneManager, buckInfo.getSourceVolume(),
+ getOmBucketInfo(metadataManager, buckInfo.getSourceVolume(),
buckInfo.getSourceBucket());
if (sourceBuckInfo != null) {
/** If the source bucket is again a link, we recursively resolve the
@@ -114,18 +124,24 @@ public final class OzoneManagerUtils {
* links.
*/
if (sourceBuckInfo.isLink()) {
- return getBucketLayout(sourceBuckInfo.getVolumeName(),
- sourceBuckInfo.getBucketName(), ozoneManager, visited);
+ return getBucketLayout(metadataManager,
+ sourceBuckInfo.getVolumeName(),
+ sourceBuckInfo.getBucketName(), visited);
}
return sourceBuckInfo.getBucketLayout();
}
}
return buckInfo.getBucketLayout();
- } else {
- LOG.error("Bucket not found: {}/{} ", volName, buckName);
- // TODO: Handle bucket validation
}
- return BucketLayout.DEFAULT;
+
+ if (!metadataManager.getVolumeTable()
+ .isExist(metadataManager.getVolumeKey(volName))) {
+ throw new OMException("Volume not found: " + volName,
+ OMException.ResultCodes.VOLUME_NOT_FOUND);
+ }
+
+ throw new OMException("Bucket not found: " + volName + "/" + buckName,
+ OMException.ResultCodes.BUCKET_NOT_FOUND);
}
/**
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
index 0f4778f8b5..e9a4be8acc 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
@@ -259,7 +259,7 @@ public final class OzoneManagerRatisUtils {
}
return BucketLayoutAwareOMKeyRequestFactory.createRequest(
- volumeName, bucketName, omRequest, ozoneManager);
+ volumeName, bucketName, omRequest, ozoneManager.getMetadataManager());
}
private static OMClientRequest getOMAclRequest(OMRequest omRequest,
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/BucketLayoutAwareOMKeyRequestFactory.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/BucketLayoutAwareOMKeyRequestFactory.java
index cb05b23771..21f14ae826 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/BucketLayoutAwareOMKeyRequestFactory.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/BucketLayoutAwareOMKeyRequestFactory.java
@@ -18,7 +18,7 @@
package org.apache.hadoop.ozone.om.request;
import org.apache.commons.lang3.StringUtils;
-import org.apache.hadoop.ozone.om.OzoneManager;
+import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.request.file.OMDirectoryCreateRequest;
@@ -57,7 +57,6 @@ import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
-import java.util.HashSet;
import static org.apache.hadoop.ozone.om.OzoneManagerUtils.getBucketLayout;
@@ -200,7 +199,7 @@ public final class BucketLayoutAwareOMKeyRequestFactory {
*/
public static OMKeyRequest createRequest(String volumeName, String bucketName,
OMRequest omRequest,
- OzoneManager ozoneManager)
+ OMMetadataManager omMetadataManager)
throws IOException {
if (StringUtils.isBlank(volumeName)) {
@@ -217,7 +216,7 @@ public final class BucketLayoutAwareOMKeyRequestFactory {
// While doing this we make sure we are resolving the real bucket in case of
// link buckets.
BucketLayout bucketLayout =
- getBucketLayout(volumeName, bucketName, ozoneManager, new HashSet<>());
+ getBucketLayout(omMetadataManager, volumeName, bucketName);
// Get the CmdType.
Type requestType = omRequest.getCmdType();
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
index 01c6c0afeb..b5fe2bc98a 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
@@ -40,6 +40,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import static org.apache.hadoop.ozone.om.OzoneManagerUtils.getBucketLayout;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo;
@@ -70,12 +71,14 @@ public final class OMFileRequest {
private OMFileRequest() {
}
+
/**
* Verify any files exist in the given path in the specified volume/bucket.
- * @param omMetadataManager
- * @param volumeName
- * @param bucketName
- * @param keyPath
+ *
+ * @param omMetadataManager OMMetadataManager
+ * @param volumeName Volume Name
+ * @param bucketName Bucket Name
+ * @param keyPath Key Path
* @return true - if file exist in the given path, else false.
* @throws IOException
*/
@@ -403,7 +406,7 @@ public final class OMFileRequest {
OMMetadataManager omMetadataManager, String volumeName,
String bucketName, Optional<OmKeyInfo> keyInfo,
Optional<List<OmKeyInfo>> parentInfoList,
- long index) {
+ long index) throws IOException {
for (OmKeyInfo parentInfo : parentInfoList.get()) {
omMetadataManager.getKeyTable(
getBucketLayout(omMetadataManager, volumeName, bucketName))
@@ -488,8 +491,9 @@ public final class OMFileRequest {
* @param trxnLogIndex transaction log index
*/
public static void addFileTableCacheEntry(
- OMMetadataManager omMetadataManager, String dbFileKey,
- OmKeyInfo omFileInfo, String fileName, long trxnLogIndex) {
+ OMMetadataManager omMetadataManager, String dbFileKey,
+ OmKeyInfo omFileInfo, String fileName, long trxnLogIndex)
+ throws IOException {
// New key format for the fileTable.
// For example, the user given key path is '/a/b/c/d/e/file1', then in DB
@@ -497,28 +501,15 @@ public final class OMFileRequest {
omFileInfo.setKeyName(fileName);
omFileInfo.setFileName(fileName);
- omMetadataManager.getKeyTable(
+ BucketLayout bucketLayout =
getBucketLayout(omMetadataManager, omFileInfo.getVolumeName(),
- omFileInfo.getBucketName()))
+ omFileInfo.getBucketName());
+
+ omMetadataManager.getKeyTable(bucketLayout)
.addCacheEntry(new CacheKey<>(dbFileKey),
new CacheValue<>(Optional.of(omFileInfo), trxnLogIndex));
}
- public static BucketLayout getBucketLayout(
- OMMetadataManager omMetadataManager, String volName, String buckName) {
- if (omMetadataManager == null) {
- return BucketLayout.DEFAULT;
- }
- String buckKey = omMetadataManager.getBucketKey(volName, buckName);
- try {
- OmBucketInfo buckInfo = omMetadataManager.getBucketTable().get(buckKey);
- return buckInfo.getBucketLayout();
- } catch (IOException e) {
- LOG.error("Cannot find the key: " + buckKey, e);
- }
- return BucketLayout.DEFAULT;
- }
-
/**
* Updating the list of OmKeyInfo eligible for deleting blocks.
*
@@ -849,15 +840,16 @@ public final class OMFileRequest {
/**
* Check if there are any sub path exist for the given user key path.
*
- * @param omKeyInfo om key path
+ * @param omKeyInfo om key path
* @param metaMgr OMMetadataManager
* @return true if there are any sub path, false otherwise
* @throws IOException DB exception
*/
public static boolean hasChildren(OmKeyInfo omKeyInfo,
- OMMetadataManager metaMgr) throws IOException {
+ OMMetadataManager metaMgr)
+ throws IOException {
return checkSubDirectoryExists(omKeyInfo, metaMgr) ||
- checkSubFileExists(omKeyInfo, metaMgr);
+ checkSubFileExists(omKeyInfo, metaMgr);
}
private static boolean checkSubDirectoryExists(OmKeyInfo omKeyInfo,
@@ -897,11 +889,13 @@ public final class OMFileRequest {
}
private static boolean checkSubFileExists(OmKeyInfo omKeyInfo,
- OMMetadataManager metaMgr) throws IOException {
- // Check all fileTable cache for any sub paths.
- Table fileTable = metaMgr.getKeyTable(
+ OMMetadataManager metaMgr)
+ throws IOException {
+ BucketLayout bucketLayout =
getBucketLayout(metaMgr, omKeyInfo.getVolumeName(),
- omKeyInfo.getBucketName()));
+ omKeyInfo.getBucketName());
+ // Check all fileTable cache for any sub paths.
+ Table fileTable = metaMgr.getKeyTable(bucketLayout);
Iterator<Map.Entry<CacheKey<String>, CacheValue<OmKeyInfo>>>
cacheIter = fileTable.cacheIterator();
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
index 0a98ad245c..51443a0691 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
@@ -132,8 +132,8 @@ public class OMKeyDeleteRequestWithFSO extends OMKeyDeleteRequest {
if (keyStatus.isDirectory()) {
// Check if there are any sub path exists under the user requested path
- if (!recursive && OMFileRequest.hasChildren(omKeyInfo,
- omMetadataManager)) {
+ if (!recursive &&
+ OMFileRequest.hasChildren(omKeyInfo, omMetadataManager)) {
throw new OMException("Directory is not empty. Key:" + keyName,
DIRECTORY_NOT_EMPTY);
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
index d963a4341f..3111a1cae1 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
@@ -435,7 +435,8 @@ public class S3MultipartUploadCompleteRequest extends OMKeyRequest {
}
protected void addKeyTableCacheEntry(OMMetadataManager omMetadataManager,
- String dbOzoneKey, OmKeyInfo omKeyInfo, long transactionLogIndex) {
+ String dbOzoneKey, OmKeyInfo omKeyInfo, long transactionLogIndex)
+ throws IOException {
// Add key entry to file table.
omMetadataManager.getKeyTable(getBucketLayout())
@@ -540,7 +541,7 @@ public class S3MultipartUploadCompleteRequest extends OMKeyRequest {
private void updateCache(OMMetadataManager omMetadataManager,
String dbBucketKey, @Nullable OmBucketInfo omBucketInfo,
String dbOzoneKey, String dbMultipartOpenKey, String dbMultipartKey,
- OmKeyInfo omKeyInfo, long transactionLogIndex) {
+ OmKeyInfo omKeyInfo, long transactionLogIndex) throws IOException {
// Update cache.
// 1. Add key entry to key table.
// 2. Delete multipartKey entry from openKeyTable and multipartInfo table.
@@ -549,9 +550,10 @@ public class S3MultipartUploadCompleteRequest extends OMKeyRequest {
addKeyTableCacheEntry(omMetadataManager, dbOzoneKey, omKeyInfo,
transactionLogIndex);
- omMetadataManager.getOpenKeyTable(getBucketLayout()).addCacheEntry(
- new CacheKey<>(dbMultipartOpenKey),
- new CacheValue<>(Optional.absent(), transactionLogIndex));
+ omMetadataManager.getOpenKeyTable(getBucketLayout())
+ .addCacheEntry(
+ new CacheKey<>(dbMultipartOpenKey),
+ new CacheValue<>(Optional.absent(), transactionLogIndex));
omMetadataManager.getMultipartInfoTable().addCacheEntry(
new CacheKey<>(dbMultipartKey),
new CacheValue<>(Optional.absent(), transactionLogIndex));
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
index d88fc95ed9..18302c5616 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
@@ -90,7 +90,8 @@ public class S3MultipartUploadCompleteRequestWithFSO
@Override
protected void addKeyTableCacheEntry(OMMetadataManager omMetadataManager,
- String ozoneKey, OmKeyInfo omKeyInfo, long transactionLogIndex) {
+ String ozoneKey, OmKeyInfo omKeyInfo, long transactionLogIndex)
+ throws IOException {
// Add key entry to file table.
OMFileRequest.addFileTableCacheEntry(omMetadataManager, ozoneKey, omKeyInfo,
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/OMClientResponse.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/OMClientResponse.java
index 2642630ab8..e4838d1537 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/OMClientResponse.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/OMClientResponse.java
@@ -24,7 +24,6 @@ import java.util.concurrent.CompletableFuture;
import com.google.common.base.Preconditions;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
-import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
.OMResponse;
@@ -52,21 +51,6 @@ public abstract class OMClientResponse {
return BucketLayout.DEFAULT;
}
- protected BucketLayout getBucketLayout(OMMetadataManager omMetadataManager,
- String volName, String buckName) {
- if (omMetadataManager == null) {
- return BucketLayout.DEFAULT;
- }
- String buckKey = omMetadataManager.getBucketKey(volName, buckName);
- try {
- OmBucketInfo buckInfo = omMetadataManager.getBucketTable().get(buckKey);
- return buckInfo.getBucketLayout();
- } catch (IOException e) {
- LOG.error("Cannot find the key: " + buckKey, e);
- }
- return BucketLayout.DEFAULT;
- }
-
/**
* For error case, check that the status of omResponse is not OK.
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org