diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java index 59348894326a..0585fea000c9 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java @@ -106,8 +106,7 @@ public Void call() throws Exception { if (duResponse.get("status").equals("PATH_NOT_FOUND")) { printPathNotFound(); } else { - if (parent.isObjectStoreBucket(path) || - !parent.bucketIsPresentInThePath(path)) { + if (parent.isNotValidBucketOrOBSBucket(path)) { printBucketReminder(); } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java index 5a2a2d11c025..f74ee109504c 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java @@ -80,8 +80,7 @@ public Void call() throws Exception { } else if (distResponse.get("status").equals("TYPE_NOT_APPLICABLE")) { printTypeNA("File Size Distribution"); } else { - if (parent.isObjectStoreBucket(path) || - !parent.bucketIsPresentInThePath(path)) { + if (parent.isNotValidBucketOrOBSBucket(path)) { printBucketReminder(); } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java index 0cd77626d157..0521e8fd7442 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java @@ -37,7 +37,6 @@ import java.io.IOException; import java.util.HashSet; -import java.util.Objects; import static org.apache.hadoop.hdds.recon.ReconConfigKeys.OZONE_RECON_ADDRESS_DEFAULT; import static org.apache.hadoop.hdds.recon.ReconConfigKeys.OZONE_RECON_ADDRESS_KEY; @@ -86,86 +85,46 @@ public Class getParentType() { return OzoneAdmin.class; } - public boolean isFileSystemOptimizedBucket(String path) throws IOException { - OFSPath ofsPath = new OFSPath(path, - OzoneConfiguration.of(getOzoneConfig())); - - OzoneClient ozoneClient = OzoneClientFactory.getRpcClient(getOzoneConfig()); - ObjectStore objectStore = ozoneClient.getObjectStore(); - - try { - OzoneBucket bucket = objectStore.getVolume(ofsPath.getVolumeName()) - .getBucket(ofsPath.getBucketName()); - - // Resolve the bucket layout in case this is a Link Bucket. - BucketLayout resolvedBucketLayout = - OzoneClientUtils.resolveLinkBucketLayout(bucket, objectStore, - new HashSet<>()); - - return resolvedBucketLayout.isFileSystemOptimized(); - } catch (IOException e) { - System.out.println( - "Bucket layout couldn't be verified for path: " + ofsPath + - ". Exception: " + e); - return false; - } - } - - public boolean isObjectStoreBucket(String path) throws IOException { - OFSPath ofsPath = new OFSPath(path, - OzoneConfiguration.of(getOzoneConfig())); - + private boolean isObjectStoreBucket(OzoneBucket bucket, ObjectStore objectStore) { boolean enableFileSystemPaths = getOzoneConfig() .getBoolean(OMConfigKeys.OZONE_OM_ENABLE_FILESYSTEM_PATHS, OMConfigKeys.OZONE_OM_ENABLE_FILESYSTEM_PATHS_DEFAULT); - - OzoneClient ozoneClient = OzoneClientFactory.getRpcClient(getOzoneConfig()); - ObjectStore objectStore = ozoneClient.getObjectStore(); - try { - OzoneBucket bucket = objectStore.getVolume(ofsPath.getVolumeName()) - .getBucket(ofsPath.getBucketName()); - // Resolve the bucket layout in case this is a Link Bucket. BucketLayout resolvedBucketLayout = OzoneClientUtils.resolveLinkBucketLayout(bucket, objectStore, new HashSet<>()); - return resolvedBucketLayout.isObjectStore(enableFileSystemPaths); } catch (IOException e) { System.out.println( - "Bucket layout couldn't be verified for path: " + ofsPath + - ". Exception: " + e); + "Bucket layout couldn't be resolved. Exception thrown: " + e); return false; } } /** - * Checking if the bucket is part of the path. + * Checks if bucket is OBS bucket or if bucket is part of the path. * Return false if path is root, just a volume or invalid. + * Returns false if bucket is part of path but not a OBS bucket. * @param path - * @return true if the bucket - * is not part of the given path. + * @return true if bucket is OBS bucket or not part of provided path. * @throws IOException */ - public boolean bucketIsPresentInThePath(String path) throws IOException { + public boolean isNotValidBucketOrOBSBucket(String path) { OFSPath ofsPath = new OFSPath(path, OzoneConfiguration.of(getOzoneConfig())); - - OzoneClient ozoneClient = OzoneClientFactory.getRpcClient(getOzoneConfig()); - ObjectStore objectStore = ozoneClient.getObjectStore(); - - try { + try (OzoneClient ozoneClient = OzoneClientFactory.getRpcClient(getOzoneConfig())) { + ObjectStore objectStore = ozoneClient.getObjectStore(); + // Checks if the bucket is part of the path. OzoneBucket bucket = objectStore.getVolume(ofsPath.getVolumeName()) .getBucket(ofsPath.getBucketName()); - - return Objects.nonNull(bucket); + return isObjectStoreBucket(bucket, objectStore); } catch (IOException e) { System.out.println( "Bucket layout couldn't be verified for path: " + ofsPath + ". Exception: " + e); - return false; } + return true; } /** diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java index c3494cf4ffba..113193c929b4 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java @@ -80,8 +80,7 @@ public Void call() throws Exception { } else if (quotaResponse.get("status").equals("TYPE_NOT_APPLICABLE")) { printTypeNA("Quota"); } else { - if (parent.isObjectStoreBucket(path) || - !parent.bucketIsPresentInThePath(path)) { + if (parent.isNotValidBucketOrOBSBucket(path)) { printBucketReminder(); } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java index 4a4946bb8092..9180274b9c70 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java @@ -76,8 +76,7 @@ public Void call() throws Exception { if (summaryResponse.get("status").equals("PATH_NOT_FOUND")) { printPathNotFound(); } else { - if (parent.isObjectStoreBucket(path) || - !parent.bucketIsPresentInThePath(path)) { + if (parent.isNotValidBucketOrOBSBucket(path)) { printBucketReminder(); }