[
https://issues.apache.org/jira/browse/JCLOUDS-1643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17907447#comment-17907447
]
Fabien Viale commented on JCLOUDS-1643:
---------------------------------------
Here is the pull request:
https://github.com/apache/jclouds/pull/214
> 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
> Time Spent: 10m
> Remaining Estimate: 0h
>
> 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)