>From Wail Alkowaileet <[email protected]>: Wail Alkowaileet has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17898 )
Change subject: [ASTERIXDB-3295][RT] Allow writing to empty S3 directory ...................................................................... [ASTERIXDB-3295][RT] Allow writing to empty S3 directory - user model changes: no - storage format changes: no - interface changes: no Details: Fix isEmptyPrefix to recognize empty directories. Change-Id: I9f222b32316256f47488185027d3be697c0d7aac Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17898 Reviewed-by: Murtadha Hubail <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- M asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java 1 file changed, 34 insertions(+), 1 deletion(-) Approvals: Murtadha Hubail: Looks good to me, approved Jenkins: Verified; Verified Anon. E. Moose #1000171: diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java index fe47537..1855110 100644 --- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java +++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java @@ -66,8 +66,9 @@ public static boolean isEmptyPrefix(S3Client s3Client, String bucket, String path) { ListObjectsV2Request.Builder listObjectsBuilder = ListObjectsV2Request.builder().bucket(bucket); listObjectsBuilder.prefix(toCloudPrefix(path)); + List<S3Object> files = s3Client.listObjectsV2(listObjectsBuilder.build()).contents(); - return s3Client.listObjectsV2(listObjectsBuilder.build()).contents().isEmpty(); + return isEmptyFolder(files, path); } public static String encodeURI(String path) { @@ -88,4 +89,16 @@ private static String toCloudPrefix(String path) { return path.startsWith(File.separator) ? path.substring(1) : path; } + + private static boolean isEmptyFolder(List<S3Object> files, String path) { + if (files.size() > 1) { + return false; + } else if (files.isEmpty()) { + return true; + } + + S3Object s3Object = files.get(0); + String key = s3Object.key(); + return s3Object.size() == 0 && key.charAt(key.length() - 1) == '/' && key.startsWith(path); + } } -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17898 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I9f222b32316256f47488185027d3be697c0d7aac Gerrit-Change-Number: 17898 Gerrit-PatchSet: 3 Gerrit-Owner: Wail Alkowaileet <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Wail Alkowaileet <[email protected]> Gerrit-MessageType: merged
