quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.63k stars 2.64k forks source link

Stork native is throwing a `BuildException` exception when the app is built #27886

Closed pjgg closed 2 years ago

pjgg commented 2 years ago

Describe the bug

Quarkus Version: Upstream Extensions: stork-service-discovery-consul and stork-service-discovery-kubernetes Stork version: 1.1.2 (same as Quarkus BOM)

Given a Quarkus app that is using Stock as a service discovery / load balancer, when I build a native application with quay.io/quarkus/ubi-quarkus-native-image:22.2-java17 docker image I am getting the following build error:

[2/7] Performing analysis...  [*]                                                                       (40.0s @ 0.93GB)
  10,953 (88.83%) of 12,330 classes reachable
  17,881 (60.63%) of 29,493 fields reachable
  60,200 (61.55%) of 97,804 methods reachable
   1,255 classes, 4,306 fields, and 15,136 methods registered for reflection

2 fatal errors detected:
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery$$Lambda$18404488dbb958346aa42961da2ebb823fbd8c35.handle(java.lang.Object) 
Parsing context:
   at io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery$$Lambda$1604/0x00000007c2021a48.handle(Unknown Source)
   at io.vertx.core.impl.ContextBase.lambda$null$0(ContextBase.java:137)
   at io.vertx.core.impl.ContextBase$$Lambda$1204/0x00000007c1f49450.handle(Unknown Source)
   at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
   at io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:135)
   at io.vertx.core.impl.ContextBase$$Lambda$1203/0x00000007c1f49228.run(Unknown Source)
   at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
   at io.vertx.core.impl.TaskQueue$$Lambda$1106/0x00000007c1ea5f20.run(Unknown Source)
   at java.lang.Shutdown.runHooks(Shutdown.java:130)
   at java.lang.Shutdown.shutdown(Shutdown.java:185)
   at com.oracle.svm.core.jdk.RuntimeSupport.shutdown(RuntimeSupport.java:158)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:152)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultVirtualInvokeTypeFlow.java:109)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:558)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:635)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
        at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery.lambda$fetchNewServiceInstances$7(KubernetesServiceDiscovery.java:88)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2506)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.throwParserError(SharedGraphBuilderPhase.java:105)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3367)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.handleBytecodeBlock(BytecodeParser.java:3319)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3164)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1138)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:1030)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:84)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase.run(SharedGraphBuilderPhase.java:79)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.run(Phase.java:49)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:261)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.AnalysisParsedGraph.parseBytecode(AnalysisParsedGraph.java:135)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsed(AnalysisMethod.java:685)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.lookupEncodedGraph(InlineBeforeAnalysis.java:180)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.doInline(PEGraphDecoder.java:1162)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.tryInline(PEGraphDecoder.java:1145)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.trySimplifyInvoke(PEGraphDecoder.java:1003)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.handleInvoke(PEGraphDecoder.java:957)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:817)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysis.java:240)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:548)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:833)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysis.decodeGraph(InlineBeforeAnalysis.java:98)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:176)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:343)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:93)
        ... 13 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:298)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedType(SharedGraphBuilderPhase.java:253)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedCheckCast(SharedGraphBuilderPhase.java:219)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genCheckCast(BytecodeParser.java:4287)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genCheckCast(BytecodeParser.java:4280)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5232)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3359)
        ... 38 more
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery$$Lambda$18404488dbb958346aa42961da2ebb823fbd8c35.handle(java.lang.Object) 
Parsing context:
   at io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery$$Lambda$1604/0x00000007c2021a48.handle(Unknown Source)
   at io.vertx.ext.consul.impl.ConsulClientImpl.reqOnContext(ConsulClientImpl.java:1339)
   at io.vertx.ext.consul.impl.ConsulClientImpl.request(ConsulClientImpl.java:1293)
   at io.vertx.ext.consul.impl.ConsulClientImpl.requestVoid(ConsulClientImpl.java:1286)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:152)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultVirtualInvokeTypeFlow.java:109)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:558)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:635)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
        at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.oracle.graal.pointsto.util.AnalysisError: parsing had failed in another thread
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.shouldNotReachHere(AnalysisError.java:176)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsed(AnalysisMethod.java:720)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.lookupEncodedGraph(InlineBeforeAnalysis.java:180)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.doInline(PEGraphDecoder.java:1162)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.tryInline(PEGraphDecoder.java:1145)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.trySimplifyInvoke(PEGraphDecoder.java:1003)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.handleInvoke(PEGraphDecoder.java:957)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:817)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysis.java:240)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:548)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:833)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysis.decodeGraph(InlineBeforeAnalysis.java:98)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:176)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:343)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:93)
        ... 13 more
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery.lambda$fetchNewServiceInstances$7(KubernetesServiceDiscovery.java:88)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2506)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.throwParserError(SharedGraphBuilderPhase.java:105)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3367)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.handleBytecodeBlock(BytecodeParser.java:3319)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3164)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1138)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:1030)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:84)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase.run(SharedGraphBuilderPhase.java:79)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.run(Phase.java:49)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:261)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.AnalysisParsedGraph.parseBytecode(AnalysisParsedGraph.java:135)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsed(AnalysisMethod.java:685)
        ... 26 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:298)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedType(SharedGraphBuilderPhase.java:253)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedCheckCast(SharedGraphBuilderPhase.java:219)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genCheckCast(BytecodeParser.java:4287)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genCheckCast(BytecodeParser.java:4280)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5232)
------------------------------------------------------------------------------------------------------------------------
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3359)
        ... 38 more
                        2.9s (5.6% of total time) in 27 GCs | Peak RSS: 2.90GB | CPU load: 5.74
========================================================================================================================
Failed generating 'stork-1.0.0-SNAPSHOT-runner' after 51.1s.
Error: Image build request failed with exit status 1

Expected behavior

Native image should not throw any error on build time

Actual behavior

Unexpected exception when a native image is built.

How to Reproduce?

git clone git@github.com:quarkus-qe/quarkus-test-suite.git

cd quarkus-test-suite

mvn clean verify -Dall-modules -pl service-discovery/stork -Dnative -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-native-image:22.2-java17

Just in case you want to have a look, the project is located under this module: service-discovery/stork. Please be sure that the following configuration in order to disable native compilation is not present in this module pom.xml

<profile>
            <!-- Disable native build on this module -->
            <id>native</id>
            <activation>
                <property>
                    <name>native</name>
                </property>
            </activation>
            <properties>
                <!-- To not build the module on Native -->
                <quarkus.package.type>fast-jar</quarkus.package.type>
            </properties>
        </profile>

Output of uname -a or ver

No response

Output of java -version

openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment Temurin-11.0.16+8 (build 11.0.16+8) OpenJDK 64-Bit Server VM Temurin-11.0.16+8 (build 11.0.16+8, mixed mode)

GraalVM version (if different from Java)

quay.io/quarkus/ubi-quarkus-native-image:22.2-java17

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

quarkus-bot[bot] commented 2 years ago

/cc @Sgitario, @aureamunoz, @cescoffier, @geoand, @iocanel

geoand commented 2 years ago

There is a pretty prominent warning message:

[WARNING] [io.quarkus.stork.deployment.SmallRyeStorkProcessor] The application is using the Stork Kubernetes Service Discovery provider but does not depend on the `quarkus-kubernetes-client` extension. It is highly recommended to use the `io.quarkus:quarkus-kubernetes-client` extension with the Kubernetes service discovery

So first of all you'll need to add:

        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-kubernetes-client</artifactId>
        </dependency>

to the application's dependencies.

Now, even with that done, I get the following:

Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery.lambda$fetchNewServiceInstances$7(KubernetesServiceDiscovery.java:88)

This seems to me the be caused by some mismatch between Kubernetes Client versions and I'll leave it to @Sgitario @aureamunoz and @manusa to figure out what's going on.

rsvoboda commented 2 years ago

about kube client + Stork Kubernetes Service Discovery: highly recommended or mandatory? @aureamunoz and @manusa

btw there is revert of kube client going on - https://github.com/quarkusio/quarkus/pull/27875 but still, we will move to 6.1 at some time

cescoffier commented 2 years ago

yes, it's a client version mismatch. With the storm happening around that subject at the moment, let's wait until we know which version will be used and adapt stork kubernetes discovery (@aureamunoz).

aureamunoz commented 2 years ago
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: io.fabric8.kubernetes.client.dsl.FilterWatchListMultiDeletable. This error is reported at image build time because class io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery is registered for linking at image build time by command line
        at parsing io.smallrye.stork.servicediscovery.kubernetes.KubernetesServiceDiscovery.lambda$fetchNewServiceInstances$7(KubernetesServiceDiscovery.java:88)

This error comes from Stork using k8s client 5.x version. The PR is in standby.

quarkus-kubernetes-client is needed when compiling natively because is this extension who does all the job

michalvavrik commented 2 years ago

@aureamunoz alright, in that case, shouldn't it be explicitly said that if you don't have quarkus-kuberentes-client extension, it won't work in native? I didn't find it in the docs and recommendation does not state what will happen. I thought all the extensions are native ready (unless stated otherwise).

cescoffier commented 2 years ago

@michalvavrik this one is an exception as it is only required when using the kubernetes discovery (which is not an extension, but a plain jar).

rsvoboda commented 2 years ago

Shouldn't be the dependency on kube client defined directly for Stork Kubernetes Service Discovery? Native mode experience should be on par with jvm mode experience (ideally).

aureamunoz commented 2 years ago

Shouldn't be the dependency on kube client defined directly for Stork Kubernetes Service Discovery? Native mode experience should be on par with jvm mode experience (ideally).

This way Stork should depend on Quarkus and and this is not desirable

cescoffier commented 2 years ago

Yes, it would create a dependency cycle. We know this is now ideal.

geoand commented 2 years ago

Is this still a problem now that Stork 1.2 has been merged into main?

aureamunoz commented 2 years ago

I've just checked and it works for me locally. WDYT @pjgg ?

pjgg commented 2 years ago

Yes, looks good to me. I could not reproduce against Stork 1.2.0

geoand commented 2 years ago

Thanks folks, I'll close this