This is an automated email from the ASF dual-hosted git repository.
abhishek 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 2dd8b16467e Correct the API used to fetch the version for a GCS object
(#16097)
2dd8b16467e is described below
commit 2dd8b16467e97fb51fd6d3985424f9521ef6cb36
Author: Vishesh Garg <[email protected]>
AuthorDate: Mon Mar 11 18:30:34 2024 +0530
Correct the API used to fetch the version for a GCS object (#16097)
Current API used to fetch the version for a GCS object is incorrect. This
PR fixes that API.
---
.../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]