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

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


The following commit(s) were added to refs/heads/29.0.1 by this push:
     new 383bb400043 Correct the API used to fetch the version for a GCS object 
(#16097) (#16101)
383bb400043 is described below

commit 383bb4000432684fefae3c931d8e59aa502f6a00
Author: Vishesh Garg <[email protected]>
AuthorDate: Tue Mar 12 19:25:32 2024 +0530

    Correct the API used to fetch the version for a GCS object (#16097) (#16101)
    
    Current API used to fetch the version for a GCS object is incorrect. This 
PR fixes that API.
    
    (cherry picked from commit 2dd8b16467e97fb51fd6d3985424f9521ef6cb36)
---
 .../java/org/apache/druid/storage/google/GoogleStorage.java | 13 +++++++++++--
 .../storage/google/GoogleTimestampVersionedDataFinder.java  |  2 +-
 .../org/apache/druid/storage/google/GoogleStorageTest.java  |  6 +++---
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleStorage.java
 
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleStorage.java
index 57c2ac1843b..6a5d17f7c24 100644
--- 
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleStorage.java
+++ 
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleStorage.java
@@ -198,13 +198,22 @@ public class GoogleStorage
     return blob.getSize();
   }
 
+  /**
+   * Return the etag for an object. This is a value that changes whenever the 
object's data or metadata changes and is
+   * typically but not always the MD5 hash of the object. Ref:
+   * <a 
href="https://cloud.google.com/storage/docs/hashes-etags#etags";>ETags</a>
+   * @param bucket
+   * @param path
+   * @return
+   * @throws IOException
+   */
   public String version(final String bucket, final String path) throws 
IOException
   {
-    Blob blob = storage.get().get(bucket, path, 
Storage.BlobGetOption.fields(Storage.BlobField.GENERATION));
+    Blob blob = storage.get().get(bucket, path, 
Storage.BlobGetOption.fields(Storage.BlobField.ETAG));
     if (blob == null) {
       throw new IOE("Failed to fetch google cloud storage object from bucket 
[%s] and path [%s].", bucket, path);
     }
-    return blob.getGeneratedId();
+    return blob.getEtag();
   }
 
   /***
diff --git 
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleTimestampVersionedDataFinder.java
 
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleTimestampVersionedDataFinder.java
index 01ae094912c..d95577d5be6 100644
--- 
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleTimestampVersionedDataFinder.java
+++ 
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleTimestampVersionedDataFinder.java
@@ -76,7 +76,7 @@ public class GoogleTimestampVersionedDataFinder extends 
GoogleDataSegmentPuller
       return latest;
     }
     catch (IOException e) {
-      throw new RuntimeException();
+      throw new RuntimeException(e);
     }
   }
 }
diff --git 
a/extensions-core/google-extensions/src/test/java/org/apache/druid/storage/google/GoogleStorageTest.java
 
b/extensions-core/google-extensions/src/test/java/org/apache/druid/storage/google/GoogleStorageTest.java
index 0a6d346d1c4..15fbde3c521 100644
--- 
a/extensions-core/google-extensions/src/test/java/org/apache/druid/storage/google/GoogleStorageTest.java
+++ 
b/extensions-core/google-extensions/src/test/java/org/apache/druid/storage/google/GoogleStorageTest.java
@@ -203,18 +203,18 @@ public class GoogleStorageTest
   @Test
   public void testVersion() throws IOException
   {
-    final String version = "7";
+    final String etag = "abcd";
     EasyMock.expect(mockStorage.get(
         EasyMock.eq(BUCKET),
         EasyMock.eq(PATH),
         EasyMock.anyObject(Storage.BlobGetOption.class)
     )).andReturn(blob);
 
-    EasyMock.expect(blob.getGeneratedId()).andReturn(version);
+    EasyMock.expect(blob.getEtag()).andReturn(etag);
 
     EasyMock.replay(mockStorage, blob);
 
-    assertEquals(version, googleStorage.version(BUCKET, PATH));
+    assertEquals(etag, googleStorage.version(BUCKET, PATH));
   }
 
   @Test


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

Reply via email to