You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Lukasz Rek (Jira)" <ji...@apache.org> on 2021/07/01 00:01:25 UTC

[jira] [Commented] (JCLOUDS-1581) NullPointerException when parsing Cors object for GCE list buckets request

    [ https://issues.apache.org/jira/browse/JCLOUDS-1581?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17372275#comment-17372275 ] 

Lukasz Rek commented on JCLOUDS-1581:
-------------------------------------

Thank you for fixing this fast. Do you know when this can be released?

> NullPointerException when parsing Cors object for GCE list buckets request
> --------------------------------------------------------------------------
>
>                 Key: JCLOUDS-1581
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1581
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-blobstore
>    Affects Versions: 2.3.0
>            Reporter: Lukasz Rek
>            Assignee: Andrew Gaul
>            Priority: Major
>              Labels: google-cloud-storage
>             Fix For: 2.4.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> NullPointerException is thrown when requesting GoogleCloudStorageBlobStore.list for specific buckets.
> Stack trace:
> {code:java}
> java.lang.NullPointerException: Null maxAgeSeconds
> 	at org.jclouds.googlecloudstorage.domain.AutoValue_Bucket_Cors.<init>(AutoValue_Bucket_Cors.java:33)
> 	at org.jclouds.googlecloudstorage.domain.Bucket$Cors.create(Bucket.java:52)
> 	at jdk.internal.reflect.GeneratedMethodAccessor188.invoke(Unknown Source)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> 	at com.google.common.reflect.Invokable$MethodInvokable.invokeInternal(Invokable.java:200)
> 	at com.google.common.reflect.Invokable.invoke(Invokable.java:101)
> 	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:227)
> 	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:207)
> 	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:96)
> 	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:84)
> 	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:63)
> 	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:275)
> 	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:187)
> 	at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.readItems(ListPageAdapterFactory.java:73)
> 	at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:56)
> 	at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:36)
> 	at com.google.gson.Gson.fromJson(Gson.java:932)
> 	at com.google.gson.Gson.fromJson(Gson.java:897)
> 	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:56)
> 	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:83)
> 	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:77)
> 	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:62)
> 	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:42)
> 	at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91)
> 	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
> 	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
> 	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
> 	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:86)
> 	at com.sun.proxy.$Proxy231.listBucket(Unknown Source)
> 	at org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.list(GoogleCloudStorageBlobStore.java:119) {code}
>  
> Bucket that is causing exception has following configuration (i removed ids from json):
> {code:java}
>     {
>       "kind": "storage#bucket",
>       "selfLink": "",
>       "id": "",
>       "name": "",
>       "projectNumber": "",
>       "metageneration": "1",
>       "location": "US-CENTRAL1",
>       "storageClass": "STANDARD",
>       "etag": "CAE=",
>       "timeCreated": "2020-10-26T13:54:23.835Z",
>       "updated": "2020-10-26T13:54:23.835Z",
>       "cors": [
>         {
>           "origin": [
>             "https://*.cloud.google.com",
>             "https://*.corp.google.com",
>             "https://*.corp.google.com:*"
>           ],
>           "method": [
>             "GET"
>           ]
>         }
>       ],
>       "iamConfiguration": {
>         "bucketPolicyOnly": {
>           "enabled": true,
>           "lockedTime": "2021-01-24T13:54:23.835Z"
>         },
>         "uniformBucketLevelAccess": {
>           "enabled": true,
>           "lockedTime": "2021-01-24T13:54:23.835Z"
>         },
>         "publicAccessPrevention": "unspecified"
>       },
>       "locationType": "region"
>     } {code}
> As you can see the CORS object have no maxAgeSeconds field. This is consistent with documentation (https://cloud.google.com/storage/docs/cross-origin#cors-elements) where maxAgeSeconds is described as optional.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)