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)

Reply via email to