Skip to content

[quarkus-kubernetes-client]: DevServicesKubernetesProcessor always shuts down cluster because of broken equals method #49405

@Obirah

Description

@Obirah

Describe the bug

I'm using the Quarkus Kubernetes Client's Dev Service in order to integration test my Quarkus Kubernetes Operators. After migrating to Quarkus Operator SDK v7, I observed that I'm not able to run a shared dev service accross multiple integration anymore which worked nicely before.

My properties look as follows:

quarkus.kubernetes-client.devservices.enabled=true
quarkus.kubernetes-client.devservices.flavor=k3s
quarkus.kubernetes-client.devservices.override-kubeconfig=true
quarkus.kubernetes-client.devservices.shared=true

After further debugging, I noticed that this boolean https://github.com/quarkusio/quarkus/blob/main/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java#L114 is always true in my tests which leads to the cluster being shutdown.

After noticing this, I looked at the equals method https://github.com/quarkusio/quarkus/blob/main/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java#L429 and noticed that there is a check flavor == other.flavor even though flavor is an Optional. For all other Optionals the equals method uses Objects.equals(...), so I assume Objects.equals(flavor, other.flavor) would be required here as well so that the equals method works properly.

Expected behavior

When configuring a shared Kubernetes Dev Service, it should not be immediately shutdown after the first test case but only after all test case were executed.

Actual behavior

When executing multiple tests at once the Kubernetes Dev Service is shutdown after the first test immediately.

How to Reproduce?

Configure a Quarkus Kubernetes Dev Service in the same way as I did, run the application in the debugger and add a breakpoint here: https://github.com/quarkusio/quarkus/blob/main/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java#L114 - shouldShutdownTheCluster will always be true.

Output of uname -a or ver

Darwin 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:30 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6020 arm64

Output of java -version

openjdk 24.0.1 2025-04-15

Quarkus version or git rev

3.25.1

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

Gradle 8.14.2

Additional information

My Quarkus Kubernetes operators are written in Kotlin.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions