GCP CE import/export returns Java reflection invoke public method errors
Closed this issue · 1 comments
ejseqera commented
When running tw compute-envs import
or tw compute-envs export
with GCP CEs using Fusion/Wave, the following error is returned:
tw compute-envs import --name $GCP_COMPUTE_ENV_NAME --workspace $SEQERA_ORGANIZATION_NAME/$SEQERA_WORKSPACE_NAME --credentials google_credentials --wait AVAILABLE ./examples/yaml/compute-envs/seqera_gcp_finland.json
New GOOGLE-BATCH compute environment 'seqera_gcp_finland_fusion_seqerakit' added at [seqerakit_automation / e2e_demo] workspace
Waiting AVAILABLE status...Exception in thread "main" org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively invoke method public void io.seqera.tower.model.GoogleBatchConfig.setWaveEnabled(java.lang.Boolean) without it being registered for runtime reflection. Add it to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.MissingReflectionRegistrationUtils.forQueriedOnlyExecutable(MissingReflectionRegistrationUtils.java:97)
at java.base@17.0.8/java.lang.reflect.Method.acquireMethodAccessor(Method.java:77)
at java.base@17.0.8/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:141)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:189)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:130)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1682)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:977)
at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:838)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:363)
at org.glassfish.jersey.client.InboundJaxrsResponse$2.call(InboundJaxrsResponse.java:126)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:123)
at io.seqera.tower.ApiClient.deserialize(ApiClient.java:647)
at io.seqera.tower.ApiClient.invokeAPI(ApiClient.java:826)
at io.seqera.tower.api.DefaultApi.describeComputeEnvWithHttpInfo(DefaultApi.java:3504)
at io.seqera.tower.api.DefaultApi.describeComputeEnv(DefaultApi.java:3448)
at io.seqera.tower.cli.commands.computeenvs.add.AbstractAddCmd.checkComputeEnvStatus(AbstractAddCmd.java:91)
at io.seqera.tower.cli.commands.computeenvs.add.AbstractAddCmd.lambda$onBeforeExit$0(AbstractAddCmd.java:81)
at io.seqera.tower.cli.utils.ResponseHelper.waitStatus(ResponseHelper.java:153)
at io.seqera.tower.cli.commands.computeenvs.add.AbstractAddCmd.onBeforeExit(AbstractAddCmd.java:76)
at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:409)
at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:59)
at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
at picocli.CommandLine.execute(CommandLine.java:2078)
at io.seqera.tower.cli.Tower.main(Tower.java:93)
Similarly for tw compute-envs export
:
tw compute-envs export tower_cloud_testing_finland_fusionv2.json -n tower_cloud_testing_finland_fusionv2 -w scidev/gcp
Exception in thread "main" org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively invoke method public void io.seqera.tower.model.GoogleBatchConfig.setWaveEnabled(java.lang.Boolean) without it being registered for runtime reflection. Add it to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.MissingReflectionRegistrationUtils.forQueriedOnlyExecutable(MissingReflectionRegistrationUtils.java:97)
...
This is currently preventing GCP CE creation via JSON using the CLI.
Versions:
Details
-------------------------+----------------------
Tower API endpoint | https://api.tower.nf
Tower API version | 1.23.0
Tower version | 23.3.0-cycle21
CLI version | 0.9.0 (0cea70d)
CLI minimum API version | 1.15
ejseqera commented
tw compute-envs delete
also seems to be similarly broken for GCP CEs in general:
$ tw compute-envs delete -n tower_cloud_testing_london_nofusionv2 -w scidev/gcp
Exception in thread "main" org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively invoke method public void io.seqera.tower.model.GoogleBatchConfig.setWaveEnabled(java.lang.Boolean) without it being registered for runtime reflection. Add it to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.MissingReflectionRegistrationUtils.forQueriedOnlyExecutable(MissingReflectionRegistrationUtils.java:97)
at java.base@17.0.8/java.lang.reflect.Method.acquireMethodAccessor(Method.java:77)
at java.base@17.0.8/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:141)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:189)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:130)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1682)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:977)
at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:838)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:363)
at org.glassfish.jersey.client.InboundJaxrsResponse$2.call(InboundJaxrsResponse.java:126)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:123)
at io.seqera.tower.ApiClient.deserialize(ApiClient.java:647)
at io.seqera.tower.ApiClient.invokeAPI(ApiClient.java:826)
at io.seqera.tower.api.DefaultApi.describeComputeEnvWithHttpInfo(DefaultApi.java:3504)
at io.seqera.tower.api.DefaultApi.describeComputeEnv(DefaultApi.java:3448)
at io.seqera.tower.cli.commands.computeenvs.AbstractComputeEnvCmd.computeEnvByName(AbstractComputeEnvCmd.java:51)
at io.seqera.tower.cli.commands.computeenvs.DeleteCmd.exec(DeleteCmd.java:43)
at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:407)
at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:59)
at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
at picocli.CommandLine.execute(CommandLine.java:2078)
at io.seqera.tower.cli.Tower.main(Tower.java:93)