Aliaksandr created JCLOUDS-1646:
-----------------------------------
Summary: 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
*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}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)