Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump kubernetes-client-bom from 5.7.2 to 5.7.3 #20016

Merged
merged 1 commit into from Sep 10, 2021

Conversation

manusa
Copy link
Contributor

@manusa manusa commented Sep 9, 2021

Kubernetes Client 5.7.3 was just released: https://github.com/fabric8io/kubernetes-client/releases/tag/v5.7.3

Just speeding up the dependabot process to see if CI reports any issue.

This should take care of #19950. It's still compatible with the older Jandex version (2.3), so should be back-portable to 2.2.x

/cc @metacosm @gastaldi

Fixes: #19950

@quarkus-bot quarkus-bot bot added the area/dependencies Pull requests that update a dependency file label Sep 9, 2021
@geoand geoand added triage/backport? triage/waiting-for-ci Ready to merge when CI successfully finishes labels Sep 9, 2021
@metacosm
Copy link
Contributor

metacosm commented Sep 9, 2021

I'm having issues with it for the quarkus-operator-sdk extension… the kubernetes extension is having trouble with KNative… see https://github.com/quarkiverse/quarkus-operator-sdk/pull/114/checks?check_run_id=3552755009#step:6:1121

@geoand geoand removed the triage/waiting-for-ci Ready to merge when CI successfully finishes label Sep 9, 2021
@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

I'll hold off merging until you folks figure this one out

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

I could reproduce the error with 2.2.1.Final:

[ERROR]         [error]: Build step io.quarkus.kubernetes.deployment.KubernetesDeployer#deploy threw an exception: io.fabric8.kubernetes.client.KubernetesClientException: Cannot edit io.fabric8.knative.serving.v1.EditableService with visitors, no builder was found

In my branch I did the following:

$ ./mvnw -Dquickly
$ cd extensions/kubernetes
$ mvn clean install

Changed dependencies of reproducer project to:

<properties>
    <quarkus-plugin.version>999-SNAPSHOT</quarkus-plugin.version>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
    <quarkus.platform.version>999-SNAPSHOT</quarkus.platform.version>
</properties>

Original issue should be gone, but getting this instead (Same error Chris reports):

[ERROR]         [error]: Build step io.quarkus.kubernetes.deployment.KubernetesProcessor#build threw an exception: java.lang.NoClassDefFoundError: io/fabric8/knative/serving/v1/EditableService
[ERROR]         at io.dekorate.knative.manifest.KnativeManifestGeneratorFactory.create(KnativeManifestGeneratorFactory.java:27)
[ERROR]         at io.dekorate.knative.manifest.KnativeManifestGeneratorFactory.create(KnativeManifestGeneratorFactory.java:24)
[ERROR]         at io.dekorate.Session.loadManifestGenerators(Session.java:117)
[ERROR]         at io.dekorate.Session.getSession(Session.java:99)
[ERROR]         at io.quarkus.kubernetes.deployment.KubernetesProcessor.lambda$build$4(KubernetesProcessor.java:133)
[ERROR]         at java.base/java.util.Optional.ifPresent(Optional.java:183)
[ERROR]         at io.quarkus.kubernetes.deployment.KubernetesProcessor.build(KubernetesProcessor.java:118)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR]         at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:820)
[ERROR]         at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR]         at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
[ERROR]         at java.base/java.lang.Thread.run(Thread.java:834)
[ERROR]         at org.jboss.threads.JBossThread.run(JBossThread.java:501)
[ERROR] Caused by: java.lang.ClassNotFoundException: io.fabric8.knative.serving.v1.EditableService
[ERROR]         at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
[ERROR]         at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
[ERROR]         at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
[ERROR]         at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
[ERROR]         at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:455)
[ERROR]         at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:405)
[ERROR]         ... 18 more

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

For some reason, the knative dependency gets loaded from Dekorate instead. A possible fix might be adding io.fabric8:knative-model to the Quarkus dependencyManagement section.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021 via email

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

Have you tried the proposed fix?

I tried, but doesn't work either.

The Quarkus Maven Plugin is using QuarkusClassLoader, and apparently the loaded jar/dependency might be different than that defined in the pom.xml. Since I'm only partially building the project, this might be the cause for that.

Does the CI output any artifacts I can reuse to overwrite my local maven repo?

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021 via email

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

@aloubyansky is the expert on how dependencies of extensions are resolved.
Perhaps he can give a hand here?

@aloubyansky
Copy link
Member

@manusa have you checked the output of mvn dependency:tree for the test module? You can also check the output of mvn quarkus:dependency-tree -Dmode=test to see the complete Quarkus test deployment dependency tree.

@quarkus-bot
Copy link

quarkus-bot bot commented Sep 9, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building bf4d499

Status Name Step Failures Logs Raw logs
JVM Tests - JDK 11 Build Failures Logs Raw logs
JVM Tests - JDK 11 Windows Build Failures Logs Raw logs
JVM Tests - JDK 16 Build Failures Logs Raw logs
Native Tests - Misc4 Build Failures Logs Raw logs

Failures

⚙️ JVM Tests - JDK 11 #

- Failing: integration-tests/kubernetes/maven-invoker-way integration-tests/kubernetes/quarkus-standard-way integration-tests/kubernetes/quarkus-standard-way-kafka and 1 more

📦 integration-tests/kubernetes/maven-invoker-way

Failed to execute goal org.apache.maven.plugins:maven-invoker-plugin:3.2.2:run (integration-tests) on project quarkus-integration-test-kubernetes-invoker: 6 builds failed. See console output above for details.

📦 integration-tests/kubernetes/quarkus-standard-way

io.quarkus.it.kubernetes.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.BasicOpenshiftTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeClusterLocalTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeContainerImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleBoundsTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleToZeroTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithSecretConfigTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesAndMinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesConfigWithSecretsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesInitContainersTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesServiceMappingTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapCustomModeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCustomResourcesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDeprecatedPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromFieldTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithGitlabLikeImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHostAliasesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithIngressTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomAbsoluteTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomRelativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsNoAnnotationsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMicrometerTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMultiplePortsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithNewStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithOldStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithPvcVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithQuarkusAppNameTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRbacAndNamespaceTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithResourcesRequirementsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRootAndHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndProbesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSysGroupTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithWarningsEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV3Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV4Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithDockerBuildStrategyTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithLegacySidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithRoutePropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithSidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithUberJarTest. - Source on GitHub

io.quarkus.it.kubernetes.WithKubernetesClientTest. - Source on GitHub

📦 integration-tests/kubernetes/quarkus-standard-way-kafka

io.quarkus.it.kubernetes.kafka.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicMinikubeTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicOpenshiftTest. - Source on GitHub

📦 integration-tests/micrometer-prometheus

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-micrometer-prometheus: Failed to build quarkus application


⚙️ JVM Tests - JDK 11 Windows #

- Failing: integration-tests/kubernetes/quarkus-standard-way integration-tests/kubernetes/quarkus-standard-way-kafka integration-tests/micrometer-prometheus 

📦 integration-tests/kubernetes/quarkus-standard-way

io.quarkus.it.kubernetes.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.BasicOpenshiftTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeClusterLocalTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeContainerImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleBoundsTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleToZeroTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithSecretConfigTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesAndMinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesConfigWithSecretsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesInitContainersTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesServiceMappingTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapCustomModeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCustomResourcesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDeprecatedPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromFieldTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithGitlabLikeImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHostAliasesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithIngressTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomAbsoluteTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomRelativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsNoAnnotationsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMicrometerTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMultiplePortsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithNewStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithOldStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithPvcVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithQuarkusAppNameTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRbacAndNamespaceTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithResourcesRequirementsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRootAndHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndProbesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSysGroupTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithWarningsEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV3Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV4Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithDockerBuildStrategyTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithLegacySidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithRoutePropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithSidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithUberJarTest. - Source on GitHub

io.quarkus.it.kubernetes.WithKubernetesClientTest. - Source on GitHub

📦 integration-tests/kubernetes/quarkus-standard-way-kafka

io.quarkus.it.kubernetes.kafka.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicMinikubeTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicOpenshiftTest. - Source on GitHub

📦 integration-tests/micrometer-prometheus

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-micrometer-prometheus: Failed to build quarkus application


⚙️ JVM Tests - JDK 16 #

- Failing: integration-tests/kubernetes/maven-invoker-way integration-tests/kubernetes/quarkus-standard-way integration-tests/kubernetes/quarkus-standard-way-kafka and 1 more

📦 integration-tests/kubernetes/maven-invoker-way

Failed to execute goal org.apache.maven.plugins:maven-invoker-plugin:3.2.2:run (integration-tests) on project quarkus-integration-test-kubernetes-invoker: 6 builds failed. See console output above for details.

📦 integration-tests/kubernetes/quarkus-standard-way

io.quarkus.it.kubernetes.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.BasicOpenshiftTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeClusterLocalTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeContainerImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleBoundsTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeScaleToZeroTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithSecretConfigTest. - Source on GitHub

io.quarkus.it.kubernetes.KnativeWithVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesAndMinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesConfigWithSecretsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesInitContainersTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesServiceMappingTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapCustomModeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithCustomResourcesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithDeprecatedPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromFieldTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithEnvFromSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithGitlabLikeImageTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithHostAliasesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithIngressTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomAbsoluteTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsCustomRelativeTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsNoAnnotationsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMetricsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMicrometerTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithMultiplePortsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithNewStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithOldStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithPvcVolumesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithQuarkusAppNameTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRbacAndNamespaceTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithResourcesRequirementsTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithRootAndHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndJibTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSidecarAndProbesTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithSysGroupTest. - Source on GitHub

io.quarkus.it.kubernetes.KubernetesWithWarningsEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithDefaultsTest. - Source on GitHub

io.quarkus.it.kubernetes.MinikubeWithMixedStyleEnvTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV3Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftV4Test. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppConfigMapTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithAppSecretTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithApplicationPropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithArgumentsTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithCommandTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithDockerBuildStrategyTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithHealthTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithLegacySidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithRoutePropertiesTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithSidecarAndS2iTest. - Source on GitHub

io.quarkus.it.kubernetes.OpenshiftWithUberJarTest. - Source on GitHub

io.quarkus.it.kubernetes.WithKubernetesClientTest. - Source on GitHub

📦 integration-tests/kubernetes/quarkus-standard-way-kafka

io.quarkus.it.kubernetes.kafka.BasicKubernetesTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicMinikubeTest. - Source on GitHub

io.quarkus.it.kubernetes.kafka.BasicOpenshiftTest. - Source on GitHub

📦 integration-tests/micrometer-prometheus

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-micrometer-prometheus: Failed to build quarkus application


⚙️ Native Tests - Misc4 #

- Failing: integration-tests/micrometer-prometheus 

📦 integration-tests/micrometer-prometheus

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-micrometer-prometheus: Failed to build quarkus application

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

From the looks of it, there is something pretty weird with the Kubernetes Client release compared to the previous one.
For the previous one, all tests passed, but now they are all failing

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

From the looks of it, there is something pretty weird with the Kubernetes Client release compared to the previous one.
For the previous one, all tests passed, but now they are all failing

All the test failures are related with the issue at hand. Somewhere there's a reference to the EditableService class.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

Which I assume is a class that has been removed?

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

This is an excerpt of the relevant output of the mvn quarkus:dependency-tree command:

[INFO] ├─ io.quarkus:quarkus-kubernetes-deployment:jar:999-SNAPSHOT (compile)
[INFO] │  ├─ io.quarkus:quarkus-container-image-deployment:jar:999-SNAPSHOT (compile)
[INFO] │  │  ├─ io.quarkus:quarkus-container-image-spi:jar:999-SNAPSHOT (compile)
[INFO] │  │  └─ io.quarkus:quarkus-container-image-util:jar:999-SNAPSHOT (compile)
[INFO] │  ├─ io.quarkus:quarkus-kubernetes-spi:jar:999-SNAPSHOT (compile)
[INFO] │  ├─ io.quarkus:quarkus-kubernetes-client-internal-deployment:jar:999-SNAPSHOT (compile)
[INFO] │  │  └─ io.fabric8:kubernetes-client:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-core:jar:5.7.3 (compile)
[INFO] │  │     │  └─ io.fabric8:kubernetes-model-common:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-rbac:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-admissionregistration:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-apps:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-autoscaling:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-apiextensions:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-batch:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-certificates:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-coordination:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-discovery:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-events:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-extensions:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-flowcontrol:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-networking:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-metrics:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-policy:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-scheduling:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-storageclass:jar:5.7.3 (compile)
[INFO] │  │     ├─ io.fabric8:kubernetes-model-node:jar:5.7.3 (compile)
[INFO] │  │     ├─ com.squareup.okhttp3:okhttp:jar:3.14.9 (compile)
[INFO] │  │     │  └─ com.squareup.okio:okio:jar:1.17.2 (compile)
[INFO] │  │     ├─ com.squareup.okhttp3:logging-interceptor:jar:3.14.9 (compile)
[INFO] │  │     ├─ io.fabric8:zjsonpatch:jar:0.3.0 (compile)
[INFO] │  │     └─ com.github.mifmif:generex:jar:1.0.2 (compile)
[INFO] │  │        └─ dk.brics.automaton:automaton:jar:1.11-8 (compile)
[INFO] │  ├─ io.dekorate:kubernetes-annotations:jar:noapt:2.3.0 (compile)
[INFO] │  │  └─ io.dekorate:docker-annotations:jar:2.3.0 (compile)
[INFO] │  └─ io.dekorate:knative-annotations:jar:noapt:2.3.0 (compile)
[INFO] │     └─ io.fabric8:knative-client:jar:5.7.3 (compile)
[INFO] │        └─ io.fabric8:knative-model:jar:5.7.3 (compile)

Everything points to the right version.

@aloubyansky
Copy link
Member

The latest release of Dekorate depends on kubernetes-client 5.1.1 https://github.com/dekorateio/dekorate/blob/2.4.1/pom.xml#L62

@aloubyansky
Copy link
Member

It hasn't changed since the release we are currently using https://github.com/dekorateio/dekorate/blob/2.3.0/pom.xml#L62

@aloubyansky
Copy link
Member

I guess we need to upgrade Dekorate to the same kubernetes-client version.

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

The latest release of Dekorate depends on kubernetes-client 5.1.1 [...]

Yes, but dependency tree, etc. show a dependency to the 5.7.3 version of the io.fabric8 modules. This is the odd part.

@aloubyansky
Copy link
Member

Which appears to be binary incompatible with the Dekorate version we are using.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

I see that we are using dekorate 2.3.0, that seems old, no?

@aloubyansky
Copy link
Member

It's not odd, this is what we enforce in the BOM.

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

What I mean is that the bom enforces the new client version, as you say, but somehow it appears that dekorate is still loading the older version (I'm not sure if I explain myself correctly).

@aloubyansky
Copy link
Member

The issue is that the latest release of Dekorate (released 8 days ago) still depends on 5.1.1. So upgrading to the Dekorate 2.4.1 won't help.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

What I mean is that the bom enforces the new client version, as you say, but somehow it appears that dekorate is still loading the older version (I'm not sure if I explain myself correctly).

Not really. What is happening is what Alexey describes. Quarkus is correctly using the kubernetes client version but dekorate is built against an old version of the client which is not binary compatible

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

@iocanel @metacosm this is one for you to handle I would say

@aloubyansky
Copy link
Member

What I mean is that the bom enforces the new client version, as you say, but somehow it appears that dekorate is still loading the older version (I'm not sure if I explain myself correctly).

It's classloading. Dekorate classes reference classes that are not present in the kubernetes client version we are upgrading to.

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

OK; I know I might be slow 😅, but how is the EditableService class reference ending there anyway. There's no such reference in the Dekorate module to that class.

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

Dekorate classes reference classes that are not present in the kubernetes client version we are upgrading to

And this is exactly what I'm saying is odd. Because Dekorate doesn't reference that EditableService class.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

OK; I know I might be slow , but how is the EditableService class ending there anyway. There's no such reference in the Dekorate module to that class.

When the JVM tries to load KnativeManifestGenerator, it first has to load all the super-classes and interfaces, all the classes of belonging to method and field signatures of KnativeManifestGenerator - and do all that recursively.
EditableService is likely accessible somewhere in that recursive loading.

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

EditableService is likely accessible somewhere in that recursive loading

This is what I've been trying to figure out for the past few hours.

The quickest solution is to release a dekorate 2.3.4 version (with updated client reference), if possible. However, I still have this unresolved mystery.

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

EditableService is likely accessible somewhere in that recursive loading

This is what I've been trying to figure out for the past few hours.

The quickest solution is to release a dekorate 2.3.4 version (with updated client reference), if possible. However, I still have this unresolved mystery.

Does using the -verbose:class JVM flag provide any useful clues?

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

Relevant parts:

[7.946s][info][class,load] io.fabric8.knative.client.KnativeExtensionAdapter source: file:/home/user/.m2/repository/io/fabric8/knative-client/5.7.3/knative-client-5.7.3.jar
[7.946s][info][class,load] io.fabric8.knative.client.KnativeClient source: file:/home/user/.m2/repository/io/fabric8/knative-client/5.7.3/knative-client-5.7.3.jar
[7.946s][info][class,load] io.fabric8.knative.client.serving.v1.ServingV1ExtensionAdapter source: file:/home/user/.m2/repository/io/fabric8/knative-client/5.7.3/knative-client-5.7.3.jar
[7.947s][info][class,load] io.fabric8.knative.client.serving.v1.ServingV1Client source: file:/home/user/.m2/repository/io/fabric8/knative-client/5.7.3/knative-client-5.7.3.jar
[8.276s][info][class,load] io.fabric8.knative.serving.v1.Service source: file:/home/user/.m2/repository/io/fabric8/knative-model/5.7.3/knative-model-5.7.3.jar
[9.657s][info][class,load] io.dekorate.knative.manifest.KnativeManifestGeneratorFactory source: file:/home/user/.m2/repository/io/dekorate/knative-annotations/2.3.0/knative-annotations-2.3.0-noapt.jar
[9.658s][info][class,load] io.dekorate.knative.manifest.KnativeManifestGenerator source: file:/home/user/.m2/repository/io/dekorate/knative-annotations/2.3.0/knative-annotations-2.3.0-noapt.jar
[9.658s][info][class,load] io.dekorate.knative.config.KnativeConfig source: file:/home/user/.m2/repository/io/dekorate/knative-annotations/2.3.0/knative-annotations-2.3.0-noapt.jar

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

So the generic type is loaded properly, although that doesn't help narrow down the source much :)

@manusa
Copy link
Contributor Author

manusa commented Sep 9, 2021

  • Cloned Dekorate, and checked out tag 2.3.0
  • Upgraded the client dependency to 5.7.3
  • Fixed compilation errors due to incompatibilities with new Handlers, etc. (see patch)
  • mvn clean install-> Local m2 repository has new Dekorate 2.3.0 version with valid client
  • Tested again in my example project
  • Class loader issue gone 🎉

So this confirms that somehow Dekorate has an embedded reference to the EditableService. However, as I stated before, I haven't found any trace of this reference in the decompiled classes of the published 2.3.0 Dekorate version


Patched files in Dekorate 2.3.0:

Index: annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/dsl/internal/ServiceMonitorOperationsImpl.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/dsl/internal/ServiceMonitorOperationsImpl.java b/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/dsl/internal/ServiceMonitorOperationsImpl.java
--- a/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/dsl/internal/ServiceMonitorOperationsImpl.java	(revision 2c413b8546ec38efe9485a96e25cce0f92c84c8a)
+++ b/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/dsl/internal/ServiceMonitorOperationsImpl.java	(date 1631194216295)
@@ -33,9 +33,7 @@
   public ServiceMonitorOperationsImpl(OperationContext context) {
     super(context.withApiGroupName("monitoring.coreos.om")
         .withApiGroupVersion("v1")
-        .withPlural("servicemonitors"));
-    this.type = ServiceMonitor.class;
-    this.listType = ServiceMonitorList.class;
+        .withPlural("servicemonitors"), ServiceMonitor.class, ServiceMonitorList.class);
   }
 
   public ServiceMonitorOperationsImpl newInstance(OperationContext context) {
Index: annotations/prometheus-annotations/src/main/resources/META-INF/services/io.fabric8.kubernetes.client.ResourceHandler
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/annotations/prometheus-annotations/src/main/resources/META-INF/services/io.fabric8.kubernetes.client.ResourceHandler b/annotations/prometheus-annotations/src/main/resources/META-INF/services/io.fabric8.kubernetes.client.ResourceHandler
--- a/annotations/prometheus-annotations/src/main/resources/META-INF/services/io.fabric8.kubernetes.client.ResourceHandler	(revision 2c413b8546ec38efe9485a96e25cce0f92c84c8a)
+++ b/annotations/prometheus-annotations/src/main/resources/META-INF/services/io.fabric8.kubernetes.client.ResourceHandler	(date 1631194107652)
@@ -1,1 +1,0 @@
-io.dekorate.prometheus.client.handlers.ServiceMonitorHandler
Index: pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/pom.xml b/pom.xml
--- a/pom.xml	(revision 2c413b8546ec38efe9485a96e25cce0f92c84c8a)
+++ b/pom.xml	(date 1631193941505)
@@ -59,7 +59,7 @@
     <version.commons-compress>1.19</version.commons-compress>
     <version.jansi>1.18</version.jansi>
     <version.jackson>2.12.3</version.jackson>
-    <version.kubernetes-client>5.1.1</version.kubernetes-client>
+    <version.kubernetes-client>5.7.3</version.kubernetes-client>
     <version.sundrio>0.25.1</version.sundrio>
 
     <!-- Testing Dependencies -->
Index: annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/handlers/ServiceMonitorHandler.java
===================================================================
diff --git a/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/handlers/ServiceMonitorHandler.java b/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/handlers/ServiceMonitorHandler.java
deleted file mode 100644
--- a/annotations/prometheus-annotations/src/main/java/io/dekorate/prometheus/client/handlers/ServiceMonitorHandler.java	(revision 2c413b8546ec38efe9485a96e25cce0f92c84c8a)
+++ /dev/null	(revision 2c413b8546ec38efe9485a96e25cce0f92c84c8a)
@@ -1,107 +0,0 @@
-/**
- * Copyright 2018 The original authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.dekorate.prometheus.client.handlers;
-
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-import io.dekorate.prometheus.client.dsl.internal.ServiceMonitorOperationsImpl;
-import io.dekorate.prometheus.model.ServiceMonitor;
-import io.dekorate.prometheus.model.ServiceMonitorBuilder;
-import io.fabric8.kubernetes.api.model.DeletionPropagation;
-import io.fabric8.kubernetes.api.model.ListOptions;
-import io.fabric8.kubernetes.client.Config;
-import io.fabric8.kubernetes.client.ResourceHandler;
-import io.fabric8.kubernetes.client.Watch;
-import io.fabric8.kubernetes.client.Watcher;
-import okhttp3.OkHttpClient;
-
-public class ServiceMonitorHandler implements ResourceHandler<ServiceMonitor, ServiceMonitorBuilder> {
-
-  @Override
-  public String getKind() {
-    return ServiceMonitor.class.getSimpleName();
-  }
-
-  @Override
-  public String getApiVersion() {
-    return "monitoring.coreos.com/v1";
-  }
-
-  @Override
-  public ServiceMonitor create(OkHttpClient client, Config config, String namespace, ServiceMonitor item) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace).create();
-  }
-
-  @Override
-  public ServiceMonitor replace(OkHttpClient client, Config config, String namespace, ServiceMonitor item) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).replace(item);
-  }
-
-  @Override
-  public ServiceMonitor reload(OkHttpClient client, Config config, String namespace, ServiceMonitor item) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).fromServer().get();
-  }
-
-  @Override
-  public ServiceMonitorBuilder edit(ServiceMonitor item) {
-    return new ServiceMonitorBuilder(item);
-  }
-
-  @Override
-  public Boolean delete(OkHttpClient client, Config config, String namespace, DeletionPropagation propagationPolicy,
-      ServiceMonitor item) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).withPropagationPolicy(propagationPolicy).delete();
-  }
-
-  @Override
-  public Watch watch(OkHttpClient client, Config config, String namespace, ServiceMonitor item,
-      Watcher<ServiceMonitor> watcher) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).watch(watcher);
-  }
-
-  @Override
-  public Watch watch(OkHttpClient client, Config config, String namespace, ServiceMonitor item, String resourceVersion,
-      Watcher<ServiceMonitor> watcher) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).watch(resourceVersion, watcher);
-  }
-
-  @Override
-  public Watch watch(OkHttpClient client, Config config, String namespace, ServiceMonitor item, ListOptions listOptions,
-      Watcher<ServiceMonitor> watcher) {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).watch(listOptions, watcher);
-  }
-
-  @Override
-  public ServiceMonitor waitUntilReady(OkHttpClient client, Config config, String namespace, ServiceMonitor item, long amount,
-      TimeUnit timeUnit) throws InterruptedException {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).waitUntilReady(amount, timeUnit);
-  }
-
-  @Override
-  public ServiceMonitor waitUntilCondition(OkHttpClient client, Config config, String namespace, ServiceMonitor item,
-      Predicate<ServiceMonitor> condition, long amount, TimeUnit timeUnit) throws InterruptedException {
-    return new ServiceMonitorOperationsImpl(client, config).withItem(item).inNamespace(namespace)
-        .withName(item.getMetadata().getName()).waitUntilCondition(condition, amount, timeUnit);
-  }
-
-}

@gastaldi
Copy link
Contributor

gastaldi commented Sep 9, 2021

@manusa looks like this is also being done in dekorateio/dekorate#786, maybe it would be nice if @iocanel and @metacosm could review that and release a new Dekorate version 👍🏻

UPDATE: Wow, the PR was already merged, that was fast 😄

@aloubyansky
Copy link
Member

@iocanel is too cool. No comment, simply getting things fixed :)

@gastaldi
Copy link
Contributor

gastaldi commented Sep 9, 2021

@iocanel is too cool. No comment, simply getting things fixed :)

@metacosm
Copy link
Contributor

metacosm commented Sep 9, 2021

Well, the problem is that while the issue seems fixed, which is very cool, we still have no idea what caused it in the first place, i.e. where is the EditableService coming from? We've been looking for a reason why and we haven't found it and it's not very satisfying… 😢

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

I'll have a look and see if I can dig up anything

@geoand
Copy link
Contributor

geoand commented Sep 9, 2021

I don't see Quarkus doing anything special here, so I'll leave it up to you folks you have knowledge of the internals of these tools to figure out what the problem was if you think it's worth it.

Signed-off-by: Marc Nuri <marc@marcnuri.com>
@manusa
Copy link
Contributor Author

manusa commented Sep 10, 2021

We've been looking for a reason why and we haven't found it and it's not very satisfying… cry

So I finally found the root cause of the problem. It all boils down to Java compiler bytecode optimization.

In my previous iterations, I never saw the reference to the io.fabric8.knative.serving.v1.EditableService class because I was actually checking the source code of io.dekorate.knative.manifest.KnativeManifestGenerator and the decompiled .class file.

However, when inspecting the bytecode of the packaged class in the knative-annotations-2.3.0-noapt.jar jar, a reference to the EditableService class does exist:

// class version 52.0 (52)
// access flags 0x21
// signature Lio/dekorate/AbstractKubernetesManifestGenerator<Lio/dekorate/knative/config/KnativeConfig;>;Lio/dekorate/WithProject;
// declaration: io/dekorate/knative/manifest/KnativeManifestGenerator extends io.dekorate.AbstractKubernetesManifestGenerator<io.dekorate.knative.config.KnativeConfig> implements io.dekorate.WithProject
// ...
   L17
    LINENUMBER 314 L17
    INVOKEINTERFACE io/fabric8/knative/serving/v1/RevisionSpecFluent$ContainersNested.withImage (Ljava/lang/String;)Lio/fabric8/kubernetes/api/model/ContainerFluent; (itf)
    CHECKCAST io/fabric8/knative/serving/v1/RevisionSpecFluent$ContainersNested
    INVOKEINTERFACE io/fabric8/knative/serving/v1/RevisionSpecFluent$ContainersNested.endContainer ()Ljava/lang/Object; (itf)
    CHECKCAST io/fabric8/knative/serving/v1/RevisionTemplateSpecFluent$SpecNested
    INVOKEINTERFACE io/fabric8/knative/serving/v1/RevisionTemplateSpecFluent$SpecNested.endSpec ()Ljava/lang/Object; (itf)
    CHECKCAST io/fabric8/knative/serving/v1/ServiceSpecFluent$TemplateNested
    INVOKEINTERFACE io/fabric8/knative/serving/v1/ServiceSpecFluent$TemplateNested.endTemplate ()Ljava/lang/Object; (itf)
    CHECKCAST io/fabric8/knative/serving/v1/ServiceFluent$SpecNested
    INVOKEINTERFACE io/fabric8/knative/serving/v1/ServiceFluent$SpecNested.endSpec ()Ljava/lang/Object; (itf)
    CHECKCAST io/fabric8/knative/serving/v1/ServiceBuilder
    INVOKEVIRTUAL io/fabric8/knative/serving/v1/ServiceBuilder.build ()Lio/fabric8/knative/serving/v1/EditableService;
// ...

@geoand geoand added the triage/waiting-for-ci Ready to merge when CI successfully finishes label Sep 10, 2021
@geoand geoand merged commit f47782c into quarkusio:main Sep 10, 2021
@quarkus-bot quarkus-bot bot added this to the 2.3 - main milestone Sep 10, 2021
@quarkus-bot quarkus-bot bot removed the triage/waiting-for-ci Ready to merge when CI successfully finishes label Sep 10, 2021
@manusa manusa deleted the deps/kubernetes-client branch September 10, 2021 11:30
@geoand geoand modified the milestones: 2.3 - main, 2.2.3.Final Sep 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Regression: Knative deployments not working in 2.2.1.Final
5 participants