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