[ https://issues.apache.org/jira/browse/JCLOUDS-1643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17907441#comment-17907441 ]
Fabien Viale commented on JCLOUDS-1643: --------------------------------------- Thanks [~nacx] for your quick response, I can do indeed a pull request in the mentioned class (I had in mind exactly this change). I don't have a way to build it myself either as I never worked inside JClouds, but I'm happy to do this PR. I resolved internally our isssue by addressing the original warning without our GCE subscription. > When Google Compute Engine instances/start contains a warning message without > code, deployment fails > ---------------------------------------------------------------------------------------------------- > > Key: JCLOUDS-1643 > URL: https://issues.apache.org/jira/browse/JCLOUDS-1643 > Project: jclouds > Issue Type: Bug > Components: jclouds-compute > Affects Versions: 2.5.0, 2.6.0 > Environment: Java 8 > Reporter: Fabien Viale > Priority: Major > Labels: google-compute-engine > > The following error is raised in our software which uses Apache Jclouds to > interact with GCE. > {noformat} > [2024-12-20 15:26:54,396 r thread 0 ERROR j.compute] > createNodesInGroup(googlecloud-dynamic), completed: 0/1, errors: 1, rate: > 1055ms/op > java.util.concurrent.ExecutionException: > org.jclouds.http.HttpResponseException: Error parsing input: Null code > {statusCode=200, message=OK, headers={Transfer-Encoding=[chunked], > Accept-Ranges=[none], X-Frame-Options=[SAMEORIGIN], Alt-Svc=[h3=":443"; > ma=2592000,h3-29=":443"; ma=2592000], Server=[ESF], > X-Content-Type-Options=[nosniff], Vary=[Origin,Accept-Encoding, Referer, > X-Origin], X-XSS-Protection=[0], Date=[Fri, 20 Dec 2024 14:26:54 GMT]}, > payload=[content=true, contentMetadata=[cacheControl=private, > contentDisposition=null, contentEncoding=null, contentLanguage=null, > contentLength=null, contentMD5=null, contentType=application/json; > charset=UTF-8, expires=null], written=false, isSensitive=false]} > at > com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:592) > at > com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:551) > at > com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:91) > at > org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:123) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:750) > Caused by: org.jclouds.http.HttpResponseException: Error parsing input: Null > code > {statusCode=200, message=OK, headers={Transfer-Encoding=[chunked], > Accept-Ranges=[none], X-Frame-Options=[SAMEORIGIN], Alt-Svc=[h3=":443"; > ma=2592000,h3-29=":443"; ma=2592000], Server=[ESF], > X-Content-Type-Options=[nosniff], Vary=[Origin,Accept-Encoding, Referer, > X-Origin], X-XSS-Protection=[0], Date=[Fri, 20 Dec 2024 14:26:54 GMT]}, > payload=[content=true, contentMetadata=[cacheControl=private, > contentDisposition=null, contentEncoding=null, contentLanguage=null, > contentLength=null, contentMD5=null, contentType=application/json; > charset=UTF-8, expires=null], written=false, isSensitive=false]} > at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:68) > 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:87) > at com.sun.proxy.$Proxy1141.create(Unknown Source) > at > org.jclouds.googlecomputeengine.compute.GoogleComputeEngineServiceAdapter.createNodeWithGroupEncodedIntoName(GoogleComputeEngineServiceAdapter.java:184) > at > org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:196) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:81) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:64) > at > com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131) > at > com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:75) > at > com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:750) > at java.lang.Thread.getStackTrace(Thread.java:1564) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:169) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:124) > at > org.jclouds.googlecomputeengine.compute.strategy.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:140) > at > org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213) > at > org.ow2.proactive.connector.iaas.cloud.provider.jclouds.google.GCEJCloudsProvider.createInstance(GCEJCloudsProvider.java:146) > at > org.ow2.proactive.connector.iaas.cloud.CloudManager.createInstance(CloudManager.java:53) > at > org.ow2.proactive.connector.iaas.service.InstanceService.lambda$createInstance$0(InstanceService.java:53) > at java.util.Optional.map(Optional.java:215) > at > org.ow2.proactive.connector.iaas.service.InstanceService.createInstance(InstanceService.java:53) > at > org.ow2.proactive.connector.iaas.rest.InstanceRest.createInstance(InstanceRest.java:71) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) > at > org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) > at > org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) > at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) > at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) > at org.glassfish.jersey.internal.Errors.process(Errors.java:315) > at org.glassfish.jersey.internal.Errors.process(Errors.java:297) > at org.glassfish.jersey.internal.Errors.process(Errors.java:267) > at > org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) > at > org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) > at > org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) > at > org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) > at > org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) > at > org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450) > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322) > at > org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > at org.eclipse.jetty.server.Server.handle(Server.java:516) > at > org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) > at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) > at > org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) > at > org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) > at > org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) > at > org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) > at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) > ... 1 more > Caused by: java.lang.NullPointerException: Null code > at > org.jclouds.googlecomputeengine.domain.AutoValue_Warning.<init>(AutoValue_Warning.java:18) > at > org.jclouds.googlecomputeengine.domain.Warning.create(Warning.java:35) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > com.google.common.reflect.Invokable$MethodInvokable.invokeInternal(Invokable.java:379) > at com.google.common.reflect.Invokable.invoke(Invokable.java:259) > at > org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:229) > at > org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:209) > 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:277) > at > org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:189) > at com.google.gson.Gson.fromJson(Gson.java:1227) > at com.google.gson.Gson.fromJson(Gson.java:1137) > at com.google.gson.Gson.fromJson(Gson.java:1107) > 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:87) > at com.sun.proxy.$Proxy1141.create(Unknown Source) > at > org.jclouds.googlecomputeengine.compute.GoogleComputeEngineServiceAdapter.createNodeWithGroupEncodedIntoName(GoogleComputeEngineServiceAdapter.java:184) > at > org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:196) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:81) > at > org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:64) > at > com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131) > at > com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:75) > at > com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > ... 1 more{noformat} > This error is due to the following response from GCE Rest API > {code:java} > { > "endTime": "2024-12-20T06:26:55.302-08:00", > "id": "5655170973470081096", > "insertTime": "2024-12-20T06:26:47.438-08:00", > "kind": "compute#operation", > "name": "operation-1734704804423-629b46fa86810-61e6ae78-a2675f54", > "operationType": "insert", > "progress": 100, > "selfLink": > "https://www.googleapis.com/compute/v1/projects/fifth-totality-235316/zones/us-central1-c/operations/operation-1734704804423-629b46fa86810-61e6ae78-a2675f54", > "startTime": "2024-12-20T06:26:47.438-08:00", > "status": "DONE", > "targetId": "8053283752946221131", > "targetLink": > "https://www.googleapis.com/compute/v1/projects/fifth-totality-235316/zones/us-central1-c/instances/googlecloud-dynamic-5e0", > "user": > "proactive-system-t...@fifth-totality-235316.iam.gserviceaccount.com", > "warnings": [ > { > "message": "You are creating a global DNS VM. VM instances using global > DNS are vulnerable to cross-regional outages. To reduce the risk of > widespread service disruption, use zonal DNS instead. Learn more at > https://cloud.google.com/compute/docs/networking/zonal-dns" > } > ], > "zone": > "https://www.googleapis.com/compute/v1/projects/fifth-totality-235316/zones/us-central1-c" > } {code} > In this response the "warnings" structure does not contain "code", nor "data" > Yet the following class (auto-generated from the Warning class) that raises > the error expects code and data to be present: > > {code:java} > AutoValue_Warning( > String code, > @Nullable String message, > List<KeyValuePair> data) { > if (code == null) { > throw new NullPointerException("Null code"); > } > this.code = code; > this.message = message; > if (data == null) { > throw new NullPointerException("Null data"); > } > this.data = data; > }{code} > Currently, our only way to make this deployment pass seem to find a way to > resolve the GCE configuration that triggers this warning. But I believe a fix > should be done in Jclouds to accept @Nullable "code" and "data" -- This message was sent by Atlassian Jira (v8.20.10#820010)