This is an automated email from the ASF dual-hosted git repository.

frankchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 6332c571bd Support to read task logs from some S3 compatible cloud 
storage (#13195)
6332c571bd is described below

commit 6332c571bd72d83cbe28f479da549272e37e183f
Author: hnakamor <[email protected]>
AuthorDate: Sat Oct 15 11:44:23 2022 +0900

    Support to read task logs from some S3 compatible cloud storage (#13195)
    
    * follow RFC7232
    
    * Only unquoted strings are processed according to RFC7232.
    
    * Add help method and test cases.
---
 .../java/org/apache/druid/storage/s3/S3TaskLogs.java  | 12 +++++++++++-
 .../org/apache/druid/storage/s3/S3TaskLogsTest.java   | 19 +++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git 
a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3TaskLogs.java
 
b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3TaskLogs.java
index 9319e8a5fc..a28fd1651c 100644
--- 
a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3TaskLogs.java
+++ 
b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3TaskLogs.java
@@ -95,7 +95,7 @@ public class S3TaskLogs implements TaskLogs
         }
 
         final GetObjectRequest request = new 
GetObjectRequest(config.getS3Bucket(), taskKey)
-            .withMatchingETagConstraint(objectMetadata.getETag())
+            
.withMatchingETagConstraint(ensureQuotated(objectMetadata.getETag()))
             .withRange(start, end);
 
         return Optional.of(service.getObject(request).getObjectContent());
@@ -115,6 +115,16 @@ public class S3TaskLogs implements TaskLogs
     }
   }
 
+  static String ensureQuotated(String eTag)
+  {
+    if (eTag != null) {
+      if (!eTag.startsWith("\"") && !eTag.endsWith("\"")) {
+        return "\"" + eTag + "\"";
+      }
+    }
+    return eTag;
+  }
+
   @Override
   public void pushTaskLog(final String taskid, final File logFile) throws 
IOException
   {
diff --git 
a/extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3TaskLogsTest.java
 
b/extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3TaskLogsTest.java
index 3b28ac07e6..7b82ca102b 100644
--- 
a/extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3TaskLogsTest.java
+++ 
b/extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3TaskLogsTest.java
@@ -480,4 +480,23 @@ public class S3TaskLogsTest extends EasyMockSupport
 
     return aclExpected.getGrantsAsList();
   }
+
+  @Test
+  public void testEnsureQuotated()
+  {
+    Assert.assertEquals("\"etag\"", S3TaskLogs.ensureQuotated("etag"));
+    Assert.assertNull(S3TaskLogs.ensureQuotated(null));
+    Assert.assertEquals("\"etag", S3TaskLogs.ensureQuotated("\"etag"));
+    Assert.assertEquals("etag\"", S3TaskLogs.ensureQuotated("etag\""));
+  }
+
+  @Test
+  public void testMatchingEtagConstraintWithEnsureQuotated()
+  {
+    String eTag = "etag";
+    final GetObjectRequest request = new GetObjectRequest(null, null)
+        .withMatchingETagConstraint(S3TaskLogs.ensureQuotated(eTag))
+        .withRange(0, 1);
+    Assert.assertEquals("\"" + eTag + "\"", 
request.getMatchingETagConstraints().get(0));
+  }
 }


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

Reply via email to