>From Wail Alkowaileet <[email protected]>:
Wail Alkowaileet has uploaded this change for review. (
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
---
M
asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java
1 file changed, 28 insertions(+), 1 deletion(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/98/17898/1
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..f344976 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 files.isEmpty() || isEmptyFolder(files, path);
}
public static String encodeURI(String path) {
@@ -88,4 +89,14 @@
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;
+ }
+
+ 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: 1
Gerrit-Owner: Wail Alkowaileet <[email protected]>
Gerrit-MessageType: newchange