operator-framework / java-operator-sdk

Java SDK for building Kubernetes Operators
https://javaoperatorsdk.io/
Apache License 2.0
791 stars 213 forks source link

Unable to run Quarkus native mode with Doneable classes generated by the Quarkus extension #285

Closed goldmann closed 3 years ago

goldmann commented 3 years ago

Using the Quarkus-extension generated Doneable classes works fine in the Quakus dev mode, but in case the app is run in native mode, the generated class cannot be found, a stacktrace is thrown and the app is crashing.

2021-01-05 09:54:49,586 ERROR [io.qua.run.Application] (main) Failed to start application (with profile prod): java.lang.IllegalArgumentException: Couldn't find class com.redhat.cpaas.k8s.model.ComponentResourceDoneable
        at io.javaoperatorsdk.quarkus.extension.QuarkusControllerConfiguration.getDoneableClass(QuarkusControllerConfiguration.java:103)
        at io.javaoperatorsdk.operator.Operator.registerController(Operator.java:84)
        at io.javaoperatorsdk.operator.Operator.register(Operator.java:46)
        at java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
        at io.javaoperatorsdk.quarkus.extension.OperatorProducer.operator(OperatorProducer.java:24)
        at io.javaoperatorsdk.quarkus.extension.OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.create(OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.zig:187)
        at io.javaoperatorsdk.quarkus.extension.OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.create(OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.zig:202)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
        at io.quarkus.arc.impl.AbstractSharedContext.access$000(AbstractSharedContext.java:14)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
        at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
        at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
        at io.javaoperatorsdk.quarkus.extension.OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.get(OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.zig:234)
        at io.javaoperatorsdk.quarkus.extension.OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.get(OperatorProducer_ProducerMethod_operator_fbb974dfbf959b9d8a2fb82741b74256904c7c58_Bean.zig:250)
        at com.redhat.cpaas.k8s.PlatformOperator_Bean.create(PlatformOperator_Bean.zig:269)
        at com.redhat.cpaas.k8s.PlatformOperator_Bean.create(PlatformOperator_Bean.zig:309)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
        at io.quarkus.arc.impl.AbstractSharedContext.access$000(AbstractSharedContext.java:14)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
        at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
        at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
        at com.redhat.cpaas.k8s.PlatformOperator_Observer_onStart_fd71b5e0b207b7d1ef838b94eaeff75e52b8f463.notify(PlatformOperator_Observer_onStart_fd71b5e0b207b7d1ef838b94eaeff75e52b8f463.zig:135)
        at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:282)
        at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:267)
        at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:69)
        at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
        at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:60)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent-858218658.deploy_0(LifecycleEventsBuildStep$startupEvent-858218658.zig:81)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent-858218658.deploy(LifecycleEventsBuildStep$startupEvent-858218658.zig:40)
        at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:565)
        at io.quarkus.runtime.Application.start(Application.java:90)
        at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:97)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:62)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:38)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:104)
        at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
metacosm commented 3 years ago

Doneable classes will be removed as part of the fabric8 kubernetes client 5 upgrade.

metacosm commented 3 years ago

Outdated. Doneable are gone! 🎉