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 8532e08  HDDS-6078. Move BucketManagerImpl#resolveLinkBucketLayout 
into utilit… (#2902)
8532e08 is described below

commit 8532e081d38b90aed8b7efaa53bf6f8c30fdfcbd
Author: Jyotinder Singh <[email protected]>
AuthorDate: Fri Dec 10 10:47:42 2021 +0530

    HDDS-6078. Move BucketManagerImpl#resolveLinkBucketLayout into utilit… 
(#2902)
---
 .../apache/hadoop/ozone/om/BucketManagerImpl.java  | 57 +---------------------
 .../apache/hadoop/ozone/om/OzoneManagerUtils.java  | 55 +++++++++++++++++++++
 .../apache/hadoop/ozone/debug/PrefixParser.java    | 12 +++--
 3 files changed, 64 insertions(+), 60 deletions(-)

diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/BucketManagerImpl.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/BucketManagerImpl.java
index dcbb158..058adf3 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/BucketManagerImpl.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/BucketManagerImpl.java
@@ -20,9 +20,7 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
-import java.util.Set;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.hadoop.crypto.CipherSuite;
 import org.apache.hadoop.crypto.CryptoProtocolVersion;
 import org.apache.hadoop.crypto.key.KeyProvider;
@@ -48,7 +46,6 @@ import org.slf4j.LoggerFactory;
 
 import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.BUCKET_NOT_FOUND;
 import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.INTERNAL_ERROR;
-import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.DETECTED_LOOP_IN_BUCKET_LINKS;
 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;
 import static 
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.VOLUME_LOCK;
@@ -273,7 +270,8 @@ public class BucketManagerImpl implements BucketManager {
         }
       }
 
-      value = resolveLinkBucketLayout(value, new HashSet<>());
+      value = OzoneManagerUtils.resolveLinkBucketLayout(value, metadataManager,
+          new HashSet<>());
 
       return value;
     } catch (IOException ex) {
@@ -289,57 +287,6 @@ public class BucketManagerImpl implements BucketManager {
   }
 
   /**
-   * Get the source bucket layout for a link bucket.
-   *
-   * @param bucketInfo
-   * @return {@code OmBucketInfo} with
-   * @throws IOException
-   */
-  public OmBucketInfo resolveLinkBucketLayout(OmBucketInfo bucketInfo,
-                                               Set<Pair<String,
-                                                   String>> visited)
-      throws IOException {
-
-    if (bucketInfo.isLink()) {
-      if (!visited.add(Pair.of(bucketInfo.getVolumeName(),
-          bucketInfo.getBucketName()))) {
-        throw new OMException("Detected loop in bucket links. Bucket name: " +
-            bucketInfo.getBucketName() + ", Volume name: " +
-            bucketInfo.getVolumeName(),
-            DETECTED_LOOP_IN_BUCKET_LINKS);
-      }
-      String sourceBucketKey = metadataManager
-          .getBucketKey(bucketInfo.getSourceVolume(),
-              bucketInfo.getSourceBucket());
-      OmBucketInfo sourceBucketInfo =
-          metadataManager.getBucketTable().get(sourceBucketKey);
-
-      // If the Link Bucket's source bucket exists, we get its layout.
-      if (sourceBucketInfo != null) {
-
-        /** If the source bucket is again a link, we recursively resolve the
-         * link bucket.
-         *
-         * For example:
-         * buck-link1 -> buck-link2 -> buck-link3 -> buck-src
-         * buck-src has the actual BucketLayout that will be used by the links.
-         *
-         * Finally - we return buck-link1's OmBucketInfo, with buck-src's
-         * bucket layout.
-         */
-        if (sourceBucketInfo.isLink()) {
-          sourceBucketInfo = resolveLinkBucketLayout(sourceBucketInfo, 
visited);
-        }
-
-        OmBucketInfo.Builder buckInfoBuilder = bucketInfo.toBuilder();
-        buckInfoBuilder.setBucketLayout(sourceBucketInfo.getBucketLayout());
-        bucketInfo = buckInfoBuilder.build();
-      }
-    }
-    return bucketInfo;
-  }
-
-  /**
    * Sets bucket property from args.
    *
    * @param args - BucketArgs.
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 8752c03..4eae6df 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
@@ -122,4 +122,59 @@ public final class OzoneManagerUtils {
     }
     return BucketLayout.DEFAULT;
   }
+
+  /**
+   * Resolve bucket layout for a given link bucket's OmBucketInfo.
+   *
+   * @param bucketInfo
+   * @return {@code OmBucketInfo} with
+   * @throws IOException
+   */
+  public static OmBucketInfo resolveLinkBucketLayout(OmBucketInfo bucketInfo,
+                                                     OMMetadataManager
+                                                         metadataManager,
+                                                     Set<Pair<String,
+                                                         String>> visited)
+      throws IOException {
+
+    if (bucketInfo.isLink()) {
+      if (!visited.add(Pair.of(bucketInfo.getVolumeName(),
+          bucketInfo.getBucketName()))) {
+        throw new OMException("Detected loop in bucket links. Bucket name: " +
+            bucketInfo.getBucketName() + ", Volume name: " +
+            bucketInfo.getVolumeName(),
+            DETECTED_LOOP_IN_BUCKET_LINKS);
+      }
+      String sourceBucketKey = metadataManager
+          .getBucketKey(bucketInfo.getSourceVolume(),
+              bucketInfo.getSourceBucket());
+      OmBucketInfo sourceBucketInfo =
+          metadataManager.getBucketTable().get(sourceBucketKey);
+
+      // If the Link Bucket's source bucket exists, we get its layout.
+      if (sourceBucketInfo != null) {
+
+        /** If the source bucket is again a link, we recursively resolve the
+         * link bucket.
+         *
+         * For example:
+         * buck-link1 -> buck-link2 -> buck-link3 -> buck-src
+         * buck-src has the actual BucketLayout that will be used by the links.
+         *
+         * Finally - we return buck-link1's OmBucketInfo, with buck-src's
+         * bucket layout.
+         */
+        if (sourceBucketInfo.isLink()) {
+          sourceBucketInfo =
+              resolveLinkBucketLayout(sourceBucketInfo, metadataManager,
+                  visited);
+        }
+
+        OmBucketInfo.Builder buckInfoBuilder = bucketInfo.toBuilder();
+        buckInfoBuilder.setBucketLayout(sourceBucketInfo.getBucketLayout());
+        bucketInfo = buckInfoBuilder.build();
+      }
+    }
+    return bucketInfo;
+  }
 }
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/PrefixParser.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/PrefixParser.java
index ed8d0e8..cabddf9 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/PrefixParser.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/PrefixParser.java
@@ -35,8 +35,11 @@ import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.hdds.utils.db.Table.KeyValue;
 import org.apache.hadoop.ozone.om.OMConfigKeys;
 import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
-import org.apache.hadoop.ozone.om.BucketManagerImpl;
-import org.apache.hadoop.ozone.om.helpers.*;
+import org.apache.hadoop.ozone.om.OzoneManagerUtils;
+import org.apache.hadoop.ozone.om.helpers.BucketLayout;
+import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
+import org.apache.hadoop.ozone.om.helpers.WithParentObjectId;
+import org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo;
 import org.kohsuke.MetaInfServices;
 import picocli.CommandLine;
 import picocli.CommandLine.Model.CommandSpec;
@@ -151,9 +154,8 @@ public class PrefixParser implements Callable<Void>, 
SubcommandWithParent {
     }
 
     BucketLayout bucketLayout =
-        new BucketManagerImpl(metadataManager)
-            .resolveLinkBucketLayout(info, new HashSet<>())
-            .getBucketLayout();
+        OzoneManagerUtils.resolveLinkBucketLayout(info, metadataManager,
+            new HashSet<>()).getBucketLayout();
 
     if (!bucketLayout.isFileSystemOptimized()) {
       System.out.println("Prefix tool only works for FileSystem Optimized" +

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to