[ https://issues.apache.org/jira/browse/JCLOUDS-1646?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aliaksandr updated JCLOUDS-1646: -------------------------------- Description: *Steps to reproduce* * Configure blob store using `google-cloud-storage` * Some blob A already exists by the path "bucket/folder1/A" * The code copies the blob A to blob B org.jclouds.blobstore.BlobStore#copyBlob("bucket", "folder1/A", "bucket", "folder2/B", CopyOptions.NONE)) * An then the code reads immediately blob B using org.jclouds.blobstore.BlobStore#getBlob("bucket", "folder2/B") * The error occurred something like below {noformat} java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "org.jclouds.io.MutableContentMetadata.getContentLength()" is null at org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.getBlob(GoogleCloudStorageBlobStore.java:254) at org.jclouds.blobstore.internal.BaseBlobStore.getBlob(BaseBlobStore.java:217) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(native) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:568) at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:50) at jdk.proxy3.$Proxy129.getBlob(unknown) {noformat} *Root cause* The attribute `Content-Length` might be null in `org.jclouds.io.ContentMetadata#getContentLength` but the code does a cast to primitive type(see `org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore#getBlob`): {noformat} Payload payload = api.getObjectApi().download(container, Strings2.urlEncode(name), httpOptions).getPayload(); long contentLength = payload.getContentMetadata().getContentLength(); {noformat} was: *Steps to reproduce* * Configure blob store using `google-cloud-storage` * Try to get a blob which doesn't exist * The error occurred something like below {noformat} java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "org.jclouds.io.MutableContentMetadata.getContentLength()" is null at org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.getBlob(GoogleCloudStorageBlobStore.java:254) at org.jclouds.blobstore.internal.BaseBlobStore.getBlob(BaseBlobStore.java:217) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(native) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:568) at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:50) at jdk.proxy3.$Proxy129.getBlob(unknown) {noformat} *Root cause* The attribute `Content-Length` might be null in `org.jclouds.io.ContentMetadata#getContentLength` but the code does a cast to primitive type(see `org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore#getBlob`): {noformat} Payload payload = api.getObjectApi().download(container, Strings2.urlEncode(name), httpOptions).getPayload(); long contentLength = payload.getContentMetadata().getContentLength(); {noformat} > GCP BlobStore fails to get blob > ------------------------------- > > Key: JCLOUDS-1646 > URL: https://issues.apache.org/jira/browse/JCLOUDS-1646 > Project: jclouds > Issue Type: Bug > Components: jclouds-blobstore > Affects Versions: 2.7.0 > Reporter: Aliaksandr > Priority: Major > Labels: google-cloud-storage > > *Steps to reproduce* > * Configure blob store using `google-cloud-storage` > * Some blob A already exists by the path "bucket/folder1/A" > * The code copies the blob A to blob B > org.jclouds.blobstore.BlobStore#copyBlob("bucket", "folder1/A", "bucket", > "folder2/B", > CopyOptions.NONE)) > * An then the code reads immediately blob B using > org.jclouds.blobstore.BlobStore#getBlob("bucket", "folder2/B") > * The error occurred something like below > {noformat} > java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" > because the return value of > "org.jclouds.io.MutableContentMetadata.getContentLength()" is null > at > org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.getBlob(GoogleCloudStorageBlobStore.java:254) > at > org.jclouds.blobstore.internal.BaseBlobStore.getBlob(BaseBlobStore.java:217) > at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(native) > at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) > at > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:568) > at > com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:50) > at jdk.proxy3.$Proxy129.getBlob(unknown) > {noformat} > *Root cause* > The attribute `Content-Length` might be null in > `org.jclouds.io.ContentMetadata#getContentLength` but the code does a cast to > primitive type(see > `org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore#getBlob`): > {noformat} > Payload payload = api.getObjectApi().download(container, > Strings2.urlEncode(name), httpOptions).getPayload(); > long contentLength = payload.getContentMetadata().getContentLength(); > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)