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 15cca5e08d5e..c322af54021f 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 long size(final String bucket, final String path) throws IOException 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: + * ETags + * @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 b93128cc2fa4..b0cae7d5d980 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 URI getLatestVersion(URI descriptorBase, @Nullable Pattern pattern) 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 f227d593ce64..c28ed1cbe2b6 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 @@ -200,18 +200,18 @@ public void testSize() throws IOException @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