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

LeaderElector does not work with Kubernetes Mock Server in 6.5.0 because of Unsupported Media Type #4965

Closed
scholzj opened this issue Mar 11, 2023 · 2 comments · Fixed by #4977
Assignees
Labels
bug component/kubernetes-server-mock Deals with the kubernetes-server-mock directory mainly
Milestone

Comments

@scholzj
Copy link
Contributor

scholzj commented Mar 11, 2023

Describe the bug

When trying to use the Fabric8 LeaderElector for leadership election, it does not seem to work against the Kubernetes Mock Server. It is able to claim the leadership, but it seems not be unable to patch the Lease resource due to following exception:

2023-03-11 19:53:38 ERROR LeaderElector:152 - Exception occurred while releasing lock 'LeaseLock: test - testlease (f2ed2009-c168-4643-83c9-aa5a17d37da9)'
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: PATCH at: https://localhost:53856/apis/coordination.k8s.io/v1/namespaces/test/leases/testlease. Message: Unsupported Media Type. Received status: Status(apiVersion=v1, code=415, details=StatusDetails(causes=[], group=null, kind=Unknown, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=Unsupported Media Type, metadata=null, reason=Invalid, status=Failure, additionalProperties={}).
	at io.fabric8.kubernetes.client.KubernetesClientException.copyAsCause(KubernetesClientException.java:238) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult(OperationSupport.java:546) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handleResponse(OperationSupport.java:566) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handlePatch(OperationSupport.java:443) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handlePatch(OperationSupport.java:420) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.BaseOperation.handlePatch(BaseOperation.java:717) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.lambda$patch$2(HasMetadataOperation.java:219) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:224) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:239) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:39) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extension.ResourceAdapter.patch(ResourceAdapter.java:305) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.resourcelock.ResourceLock.update(ResourceLock.java:65) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.release(LeaderElector.java:149) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.stopLeading(LeaderElector.java:130) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$null$1(LeaderElector.java:95) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$renewWithTimeout$6(LeaderElector.java:179) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$loop$8(LeaderElector.java:266) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: PATCH at: https://localhost:53856/apis/coordination.k8s.io/v1/namespaces/test/leases/testlease. Message: Unsupported Media Type. Received status: Status(apiVersion=v1, code=415, details=StatusDetails(causes=[], group=null, kind=Unknown, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=Unsupported Media Type, metadata=null, reason=Invalid, status=Failure, additionalProperties={}).
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.requestFailure(OperationSupport.java:701) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.requestFailure(OperationSupport.java:681) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.assertResponseCode(OperationSupport.java:630) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.lambda$handleResponse$0(OperationSupport.java:591) ~[kubernetes-client-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$completeOrCancel$5(StandardHttpClient.java:120) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$completeOrCancel$5(StandardHttpClient.java:120) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$retryWithExponentialBackoff$7(StandardHttpClient.java:159) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:844) ~[?:?]
	at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483) ~[?:?]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]

Fabric8 Kubernetes Client version

6.5.0

Steps to reproduce

The following reproducer should reproduce the issue. The test does not fail as it does not test anything (it is just used to run against the Mock Server), but you should see the error:

import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.extended.leaderelection.LeaderCallbacks;
import io.fabric8.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder;
import io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector;
import io.fabric8.kubernetes.client.extended.leaderelection.resourcelock.LeaseLock;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import org.junit.jupiter.api.Test;

import java.time.Duration;
import java.util.UUID;

@EnableKubernetesMockClient(crud = true)
public class Fabric8Test {
    private static final String NAME = "testlease";

    // Injected by Fabric8 Mock Kubernetes Server
    @SuppressWarnings("unused")
    private KubernetesClient client;

    @Test
    public void testLeaderElection()   {
        final String lockIdentity = UUID.randomUUID().toString();

        LeaderElector leader = client.leaderElector()
                .withConfig(
                        new LeaderElectionConfigBuilder()
                                .withReleaseOnCancel()
                                .withName("Sample Leader Election configuration")
                                .withLeaseDuration(Duration.ofSeconds(15L))
                                .withLock(new LeaseLock(client.getNamespace(), NAME, lockIdentity))
                                .withRenewDeadline(Duration.ofSeconds(10L))
                                .withRetryPeriod(Duration.ofSeconds(2L))
                                .withLeaderCallbacks(new LeaderCallbacks(
                                        () -> System.out.println("STARTED LEADERSHIP"),
                                        () -> System.out.println("STOPPED LEADERSHIP"),
                                        newLeader -> System.out.printf("New leader elected %s%n", newLeader)))
                                .build())
                .build();
        leader.run();
    }
}

Expected behavior

The LeaderElector keeps running and does not fail.

Runtime

other (please specify in additional context)

Kubernetes API Server version

other (please specify in additional context)

Environment

macOS

Fabric8 Kubernetes Client Logs

Following logs are from the code shared above:


/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/java -ea -Didea.test.cyclic.buffer.size=1048576000 -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53852:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/scholzj/.m2/repository/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar:/Users/scholzj/.m2/repository/org/junit/vintage/junit-vintage-engine/5.8.2/junit-vintage-engine-5.8.2.jar:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit5-rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit-rt.jar:/Users/scholzj/development/strimzi/cluster-operator/target/test-classes:/Users/scholzj/development/strimzi/cluster-operator/target/classes:/Users/scholzj/development/strimzi/api/target/classes:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-common/6.5.0/kubernetes-model-common-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-apiextensions/6.5.0/kubernetes-model-apiextensions-6.5.0.jar:/Users/scholzj/development/strimzi/config-model/target/classes:/Users/scholzj/development/strimzi/operator-common/target/classes:/Users/scholzj/development/strimzi/crd-annotations/target/classes:/Users/scholzj/.m2/repository/org/quartz-scheduler/quartz/2.3.2/quartz-2.3.2.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-client/6.5.0/openshift-client-6.5.0.jar:/Users/scholzj/.m2/repository/com/github/mifmif/generex/1.0.2/generex-1.0.2.jar:/Users/scholzj/.m2/repository/dk/brics/automaton/automaton/1.11-8/automaton-1.11-8.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-client-api/6.5.0/openshift-client-api-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-clusterautoscaling/6.5.0/openshift-model-clusterautoscaling-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-operator/6.5.0/openshift-model-operator-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-operatorhub/6.5.0/openshift-model-operatorhub-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-machine/6.5.0/openshift-model-machine-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-whereabouts/6.5.0/openshift-model-whereabouts-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-monitoring/6.5.0/openshift-model-monitoring-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-storageversionmigrator/6.5.0/openshift-model-storageversionmigrator-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-tuned/6.5.0/openshift-model-tuned-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-console/6.5.0/openshift-model-console-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-config/6.5.0/openshift-model-config-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-machineconfig/6.5.0/openshift-model-machineconfig-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-miscellaneous/6.5.0/openshift-model-miscellaneous-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-hive/6.5.0/openshift-model-hive-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model-installer/6.5.0/openshift-model-installer-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-client/6.5.0/kubernetes-client-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-httpclient-jdk/6.5.0/kubernetes-httpclient-jdk-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-client-api/6.5.0/kubernetes-client-api-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-gatewayapi/6.5.0/kubernetes-model-gatewayapi-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-resource/6.5.0/kubernetes-model-resource-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-admissionregistration/6.5.0/kubernetes-model-admissionregistration-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-autoscaling/6.5.0/kubernetes-model-autoscaling-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-batch/6.5.0/kubernetes-model-batch-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-certificates/6.5.0/kubernetes-model-certificates-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-discovery/6.5.0/kubernetes-model-discovery-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-extensions/6.5.0/kubernetes-model-extensions-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-flowcontrol/6.5.0/kubernetes-model-flowcontrol-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-metrics/6.5.0/kubernetes-model-metrics-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-scheduling/6.5.0/kubernetes-model-scheduling-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-node/6.5.0/kubernetes-model-node-6.5.0.jar:/Users/scholzj/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/scholzj/.m2/repository/org/snakeyaml/snakeyaml-engine/2.6/snakeyaml-engine-2.6.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.14.2/jackson-datatype-jsr310-2.14.2.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-core/6.5.0/kubernetes-model-core-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-events/6.5.0/kubernetes-model-events-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-policy/6.5.0/kubernetes-model-policy-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-rbac/6.5.0/kubernetes-model-rbac-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-apps/6.5.0/kubernetes-model-apps-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-storageclass/6.5.0/kubernetes-model-storageclass-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-networking/6.5.0/kubernetes-model-networking-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-model-coordination/6.5.0/kubernetes-model-coordination-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/openshift-model/6.5.0/openshift-model-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/zjsonpatch/0.3.0/zjsonpatch-0.3.0.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.14.1/jackson-core-2.14.1.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.14.1/jackson-databind-2.14.1.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.14.1/jackson-annotations-2.14.1.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.14.1/jackson-dataformat-yaml-2.14.1.jar:/Users/scholzj/.m2/repository/org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar:/Users/scholzj/.m2/repository/io/vertx/vertx-core/4.3.8/vertx-core-4.3.8.jar:/Users/scholzj/.m2/repository/io/netty/netty-common/4.1.87.Final/netty-common-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-buffer/4.1.87.Final/netty-buffer-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-handler/4.1.87.Final/netty-handler-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-handler-proxy/4.1.87.Final/netty-handler-proxy-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-codec-http/4.1.87.Final/netty-codec-http-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-codec-http2/4.1.87.Final/netty-codec-http2-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-resolver/4.1.87.Final/netty-resolver-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-resolver-dns/4.1.87.Final/netty-resolver-dns-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-codec-dns/4.1.87.Final/netty-codec-dns-4.1.87.Final.jar:/Users/scholzj/development/strimzi/certificate-manager/target/classes:/Users/scholzj/.m2/repository/org/apache/logging/log4j/log4j-core/2.17.2/log4j-core-2.17.2.jar:/Users/scholzj/.m2/repository/org/apache/logging/log4j/log4j-api/2.17.2/log4j-api-2.17.2.jar:/Users/scholzj/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.17.2/log4j-slf4j-impl-2.17.2.jar:/Users/scholzj/.m2/repository/org/apache/logging/log4j/log4j-jul/2.17.2/log4j-jul-2.17.2.jar:/Users/scholzj/.m2/repository/io/strimzi/kafka-oauth-server/0.11.0/kafka-oauth-server-0.11.0.jar:/Users/scholzj/.m2/repository/io/strimzi/kafka-oauth-server-plain/0.11.0/kafka-oauth-server-plain-0.11.0.jar:/Users/scholzj/.m2/repository/io/strimzi/kafka-oauth-client/0.11.0/kafka-oauth-client-0.11.0.jar:/Users/scholzj/.m2/repository/io/strimzi/kafka-oauth-common/0.11.0/kafka-oauth-common-0.11.0.jar:/Users/scholzj/.m2/repository/com/nimbusds/nimbus-jose-jwt/9.10/nimbus-jose-jwt-9.10.jar:/Users/scholzj/.m2/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/Users/scholzj/.m2/repository/com/jayway/jsonpath/json-path/2.6.0/json-path-2.6.0.jar:/Users/scholzj/.m2/repository/net/minidev/json-smart/2.4.7/json-smart-2.4.7.jar:/Users/scholzj/.m2/repository/net/minidev/accessors-smart/2.4.7/accessors-smart-2.4.7.jar:/Users/scholzj/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2.jar:/Users/scholzj/.m2/repository/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar:/Users/scholzj/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/scholzj/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/scholzj/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/scholzj/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/scholzj/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2.jar:/Users/scholzj/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/scholzj/.m2/repository/io/vertx/vertx-junit5/4.3.8/vertx-junit5-4.3.8.jar:/Users/scholzj/.m2/repository/org/apache/kafka/connect-file/3.4.0/connect-file-3.4.0.jar:/Users/scholzj/.m2/repository/org/apache/kafka/connect-api/3.4.0/connect-api-3.4.0.jar:/Users/scholzj/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.jar:/Users/scholzj/.m2/repository/io/strimzi/strimzi-test-container/0.103.0/strimzi-test-container-0.103.0.jar:/Users/scholzj/.m2/repository/org/testcontainers/testcontainers/1.17.4/testcontainers-1.17.4.jar:/Users/scholzj/.m2/repository/org/rnorth/duct-tape/duct-tape/1.0.8/duct-tape-1.0.8.jar:/Users/scholzj/.m2/repository/org/jetbrains/annotations/17.0.0/annotations-17.0.0.jar:/Users/scholzj/.m2/repository/com/github/docker-java/docker-java-transport-zerodep/3.2.13/docker-java-transport-zerodep-3.2.13.jar:/Users/scholzj/.m2/repository/com/github/docker-java/docker-java-transport/3.2.13/docker-java-transport-3.2.13.jar:/Users/scholzj/.m2/repository/net/java/dev/jna/jna/5.8.0/jna-5.8.0.jar:/Users/scholzj/.m2/repository/org/testcontainers/toxiproxy/1.17.4/toxiproxy-1.17.4.jar:/Users/scholzj/.m2/repository/eu/rekawek/toxiproxy/toxiproxy-java/2.1.7/toxiproxy-java-2.1.7.jar:/Users/scholzj/.m2/repository/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar:/Users/scholzj/.m2/repository/com/github/docker-java/docker-java-api/3.2.13/docker-java-api-3.2.13.jar:/Users/scholzj/.m2/repository/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/Users/scholzj/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/Users/scholzj/.m2/repository/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.jar:/Users/scholzj/.m2/repository/org/apache/kafka/connect-runtime/3.4.0/connect-runtime-3.4.0.jar:/Users/scholzj/.m2/repository/org/apache/kafka/connect-json/3.4.0/connect-json-3.4.0.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.13.4/jackson-datatype-jdk8-2.13.4.jar:/Users/scholzj/.m2/repository/org/apache/kafka/connect-transforms/3.4.0/connect-transforms-3.4.0.jar:/Users/scholzj/.m2/repository/org/apache/kafka/kafka-tools/3.4.0/kafka-tools-3.4.0.jar:/Users/scholzj/.m2/repository/org/apache/kafka/kafka-server-common/3.4.0/kafka-server-common-3.4.0.jar:/Users/scholzj/.m2/repository/com/yammer/metrics/metrics-core/2.2.0/metrics-core-2.2.0.jar:/Users/scholzj/.m2/repository/org/apache/kafka/kafka-log4j-appender/3.4.0/kafka-log4j-appender-3.4.0.jar:/Users/scholzj/.m2/repository/org/slf4j/slf4j-reload4j/1.7.36/slf4j-reload4j-1.7.36.jar:/Users/scholzj/.m2/repository/net/sourceforge/argparse4j/argparse4j/0.7.0/argparse4j-0.7.0.jar:/Users/scholzj/.m2/repository/ch/qos/reload4j/reload4j/1.2.19/reload4j-1.2.19.jar:/Users/scholzj/.m2/repository/org/bitbucket/b_c/jose4j/0.7.9/jose4j-0.7.9.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.13.4/jackson-jaxrs-json-provider-2.13.4.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.13.4/jackson-jaxrs-base-2.13.4.jar:/Users/scholzj/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.14.1/jackson-module-jaxb-annotations-2.14.1.jar:/Users/scholzj/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet/2.34/jersey-container-servlet-2.34.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.34/jersey-container-servlet-core-2.34.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/external/jakarta.inject/2.6.1/jakarta.inject-2.6.1.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/core/jersey-common/2.34/jersey-common-2.34.jar:/Users/scholzj/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/core/jersey-server/2.34/jersey-server-2.34.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/core/jersey-client/2.34/jersey-client-2.34.jar:/Users/scholzj/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/Users/scholzj/.m2/repository/jakarta/ws/rs/jakarta.ws.rs-api/2.1.6/jakarta.ws.rs-api-2.1.6.jar:/Users/scholzj/.m2/repository/org/glassfish/jersey/inject/jersey-hk2/2.34/jersey-hk2-2.34.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/hk2-locator/2.6.1/hk2-locator-2.6.1.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.6.1/aopalliance-repackaged-2.6.1.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/hk2-api/2.6.1/hk2-api-2.6.1.jar:/Users/scholzj/.m2/repository/org/glassfish/hk2/hk2-utils/2.6.1/hk2-utils-2.6.1.jar:/Users/scholzj/.m2/repository/org/javassist/javassist/3.25.0-GA/javassist-3.25.0-GA.jar:/Users/scholzj/.m2/repository/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar:/Users/scholzj/.m2/repository/javax/activation/activation/1.1.1/activation-1.1.1.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-server/9.4.48.v20220622/jetty-server-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-http/9.4.48.v20220622/jetty-http-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-io/9.4.48.v20220622/jetty-io-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-servlet/9.4.48.v20220622/jetty-servlet-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-security/9.4.48.v20220622/jetty-security-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-util-ajax/9.4.48.v20220622/jetty-util-ajax-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-servlets/9.4.48.v20220622/jetty-servlets-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-continuation/9.4.48.v20220622/jetty-continuation-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-util/9.4.48.v20220622/jetty-util-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/eclipse/jetty/jetty-client/9.4.48.v20220622/jetty-client-9.4.48.v20220622.jar:/Users/scholzj/.m2/repository/org/reflections/reflections/0.9.12/reflections-0.9.12.jar:/Users/scholzj/.m2/repository/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.jar:/Users/scholzj/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar:/Users/scholzj/.m2/repository/io/swagger/core/v3/swagger-annotations/2.2.0/swagger-annotations-2.2.0.jar:/Users/scholzj/.m2/repository/org/mockito/mockito-core/4.4.0/mockito-core-4.4.0.jar:/Users/scholzj/.m2/repository/net/bytebuddy/byte-buddy/1.12.8/byte-buddy-1.12.8.jar:/Users/scholzj/.m2/repository/net/bytebuddy/byte-buddy-agent/1.12.8/byte-buddy-agent-1.12.8.jar:/Users/scholzj/.m2/repository/org/objenesis/objenesis/3.2/objenesis-3.2.jar:/Users/scholzj/development/strimzi/test/target/classes:/Users/scholzj/development/strimzi/mockkube/target/classes:/Users/scholzj/development/strimzi/operator-common/target/test-classes:/Users/scholzj/.m2/repository/com/github/spotbugs/spotbugs-annotations/4.7.2/spotbugs-annotations-4.7.2.jar:/Users/scholzj/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/scholzj/.m2/repository/org/apache/kafka/kafka-clients/3.4.0/kafka-clients-3.4.0.jar:/Users/scholzj/.m2/repository/com/github/luben/zstd-jni/1.5.2-1/zstd-jni-1.5.2-1.jar:/Users/scholzj/.m2/repository/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/Users/scholzj/.m2/repository/org/xerial/snappy/snappy-java/1.1.8.4/snappy-java-1.1.8.4.jar:/Users/scholzj/.m2/repository/org/apache/zookeeper/zookeeper/3.6.3/zookeeper-3.6.3.jar:/Users/scholzj/.m2/repository/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0.jar:/Users/scholzj/.m2/repository/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final.jar:/Users/scholzj/.m2/repository/org/apache/zookeeper/zookeeper-jute/3.6.3/zookeeper-jute-3.6.3.jar:/Users/scholzj/.m2/repository/io/netty/netty-transport/4.1.87.Final/netty-transport-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-x86_64.jar:/Users/scholzj/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-transport-classes-epoll/4.1.87.Final/netty-transport-classes-epoll-4.1.87.Final.jar:/Users/scholzj/.m2/repository/org/scala-lang/scala-library/2.13.9/scala-library-2.13.9.jar:/Users/scholzj/.m2/repository/io/micrometer/micrometer-core/1.9.5/micrometer-core-1.9.5.jar:/Users/scholzj/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar:/Users/scholzj/.m2/repository/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar:/Users/scholzj/.m2/repository/io/micrometer/micrometer-registry-prometheus/1.9.5/micrometer-registry-prometheus-1.9.5.jar:/Users/scholzj/.m2/repository/io/prometheus/simpleclient_common/0.15.0/simpleclient_common-0.15.0.jar:/Users/scholzj/.m2/repository/io/prometheus/simpleclient/0.15.0/simpleclient-0.15.0.jar:/Users/scholzj/.m2/repository/io/prometheus/simpleclient_tracer_otel/0.15.0/simpleclient_tracer_otel-0.15.0.jar:/Users/scholzj/.m2/repository/io/prometheus/simpleclient_tracer_common/0.15.0/simpleclient_tracer_common-0.15.0.jar:/Users/scholzj/.m2/repository/io/prometheus/simpleclient_tracer_otel_agent/0.15.0/simpleclient_tracer_otel_agent-0.15.0.jar:/Users/scholzj/.m2/repository/io/vertx/vertx-micrometer-metrics/4.3.8/vertx-micrometer-metrics-4.3.8.jar:/Users/scholzj/.m2/repository/org/mock-server/mockserver-netty/5.13.2/mockserver-netty-5.13.2.jar:/Users/scholzj/.m2/repository/io/netty/netty-codec/4.1.87.Final/netty-codec-4.1.87.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-classes/2.0.51.Final/netty-tcnative-classes-2.0.51.Final.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final-linux-x86_64.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final-linux-aarch_64.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final-osx-x86_64.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final-osx-aarch_64.jar:/Users/scholzj/.m2/repository/io/netty/netty-tcnative-boringssl-static/2.0.51.Final/netty-tcnative-boringssl-static-2.0.51.Final-windows-x86_64.jar:/Users/scholzj/.m2/repository/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/Users/scholzj/.m2/repository/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar:/Users/scholzj/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/scholzj/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/scholzj/.m2/repository/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar:/Users/scholzj/.m2/repository/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar:/Users/scholzj/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/scholzj/.m2/repository/org/mock-server/mockserver-core/5.13.2/mockserver-core-5.13.2.jar:/Users/scholzj/.m2/repository/com/lmax/disruptor/3.4.4/disruptor-3.4.4.jar:/Users/scholzj/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar:/Users/scholzj/.m2/repository/io/netty/netty-codec-socks/4.1.87.Final/netty-codec-socks-4.1.87.Final.jar:/Users/scholzj/.m2/repository/com/jcraft/jzlib/1.1.3/jzlib-1.1.3.jar:/Users/scholzj/.m2/repository/com/fasterxml/uuid/java-uuid-generator/4.0.1/java-uuid-generator-4.0.1.jar:/Users/scholzj/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.70/bcprov-jdk15on-1.70.jar:/Users/scholzj/.m2/repository/org/bouncycastle/bcpkix-jdk15on/1.70/bcpkix-jdk15on-1.70.jar:/Users/scholzj/.m2/repository/org/bouncycastle/bcutil-jdk15on/1.70/bcutil-jdk15on-1.70.jar:/Users/scholzj/.m2/repository/org/apache/velocity/velocity-engine-scripting/2.3/velocity-engine-scripting-2.3.jar:/Users/scholzj/.m2/repository/org/apache/velocity/velocity-engine-core/2.3/velocity-engine-core-2.3.jar:/Users/scholzj/.m2/repository/org/apache/velocity/tools/velocity-tools-generic/3.1/velocity-tools-generic-3.1.jar:/Users/scholzj/.m2/repository/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar:/Users/scholzj/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/scholzj/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar:/Users/scholzj/.m2/repository/org/apache/commons/commons-digester3/3.2/commons-digester3-3.2.jar:/Users/scholzj/.m2/repository/com/github/cliftonlabs/json-simple/3.0.2/json-simple-3.0.2.jar:/Users/scholzj/.m2/repository/com/samskivert/jmustache/1.15/jmustache-1.15.jar:/Users/scholzj/.m2/repository/net/javacrumbs/json-unit/json-unit-core/2.33.0/json-unit-core-2.33.0.jar:/Users/scholzj/.m2/repository/com/networknt/json-schema-validator/1.0.68/json-schema-validator-1.0.68.jar:/Users/scholzj/.m2/repository/com/ethlo/time/itu/1.5.1/itu-1.5.1.jar:/Users/scholzj/.m2/repository/io/swagger/parser/v3/swagger-parser/2.0.32/swagger-parser-2.0.32.jar:/Users/scholzj/.m2/repository/io/swagger/parser/v3/swagger-parser-v2-converter/2.0.32/swagger-parser-v2-converter-2.0.32.jar:/Users/scholzj/.m2/repository/io/swagger/swagger-core/1.6.6/swagger-core-1.6.6.jar:/Users/scholzj/.m2/repository/io/swagger/swagger-models/1.6.6/swagger-models-1.6.6.jar:/Users/scholzj/.m2/repository/io/swagger/swagger-annotations/1.6.6/swagger-annotations-1.6.6.jar:/Users/scholzj/.m2/repository/io/swagger/swagger-parser/1.0.59/swagger-parser-1.0.59.jar:/Users/scholzj/.m2/repository/io/swagger/swagger-compat-spec-parser/1.0.59/swagger-compat-spec-parser-1.0.59.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/json-schema-validator/2.2.14/json-schema-validator-2.2.14.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/jackson-coreutils-equivalence/1.0/jackson-coreutils-equivalence-1.0.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/json-schema-core/1.2.14/json-schema-core-1.2.14.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/uri-template/0.10/uri-template-0.10.jar:/Users/scholzj/.m2/repository/org/mozilla/rhino/1.7.7.2/rhino-1.7.7.2.jar:/Users/scholzj/.m2/repository/com/sun/mail/mailapi/1.6.2/mailapi-1.6.2.jar:/Users/scholzj/.m2/repository/joda-time/joda-time/2.10.5/joda-time-2.10.5.jar:/Users/scholzj/.m2/repository/com/googlecode/libphonenumber/libphonenumber/8.11.1/libphonenumber-8.11.1.jar:/Users/scholzj/.m2/repository/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/json-patch/1.13/json-patch-1.13.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/msg-simple/1.2/msg-simple-1.2.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/btf/1.3/btf-1.3.jar:/Users/scholzj/.m2/repository/com/github/java-json-tools/jackson-coreutils/2.0/jackson-coreutils-2.0.jar:/Users/scholzj/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/scholzj/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/scholzj/.m2/repository/io/swagger/core/v3/swagger-models/2.2.0/swagger-models-2.2.0.jar:/Users/scholzj/.m2/repository/io/swagger/parser/v3/swagger-parser-core/2.0.32/swagger-parser-core-2.0.32.jar:/Users/scholzj/.m2/repository/io/swagger/parser/v3/swagger-parser-v3/2.0.32/swagger-parser-v3-2.0.32.jar:/Users/scholzj/.m2/repository/io/swagger/core/v3/swagger-core/2.2.0/swagger-core-2.2.0.jar:/Users/scholzj/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/3.0.1/jakarta.xml.bind-api-3.0.1.jar:/Users/scholzj/.m2/repository/com/sun/activation/jakarta.activation/2.0.1/jakarta.activation-2.0.1.jar:/Users/scholzj/.m2/repository/com/sun/xml/bind/jaxb-impl/3.0.2/jaxb-impl-3.0.2.jar:/Users/scholzj/.m2/repository/com/sun/xml/bind/jaxb-core/3.0.2/jaxb-core-3.0.2.jar:/Users/scholzj/.m2/repository/org/xmlunit/xmlunit-core/2.9.0/xmlunit-core-2.9.0.jar:/Users/scholzj/.m2/repository/org/xmlunit/xmlunit-placeholders/2.9.0/xmlunit-placeholders-2.9.0.jar:/Users/scholzj/.m2/repository/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/Users/scholzj/.m2/repository/org/apache/commons/commons-text/1.9/commons-text-1.9.jar:/Users/scholzj/.m2/repository/commons-codec/commons-codec/1.13/commons-codec-1.13.jar:/Users/scholzj/.m2/repository/io/github/classgraph/classgraph/4.8.143/classgraph-4.8.143.jar:/Users/scholzj/.m2/repository/org/mock-server/mockserver-client-java/5.13.2/mockserver-client-java-5.13.2.jar:/Users/scholzj/.m2/repository/io/fabric8/kubernetes-server-mock/6.5.0/kubernetes-server-mock-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/mockwebserver/0.2.2/mockwebserver-0.2.2.jar:/Users/scholzj/.m2/repository/com/squareup/okhttp3/mockwebserver/3.14.7/mockwebserver-3.14.7.jar:/Users/scholzj/.m2/repository/com/squareup/okhttp3/okhttp/3.14.7/okhttp-3.14.7.jar:/Users/scholzj/.m2/repository/com/squareup/okio/okio/1.17.2/okio-1.17.2.jar:/Users/scholzj/.m2/repository/io/fabric8/servicecatalog-client/6.5.0/servicecatalog-client-6.5.0.jar:/Users/scholzj/.m2/repository/io/fabric8/servicecatalog-model/6.5.0/servicecatalog-model-6.5.0.jar com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 io.strimzi.operator.cluster.operator.assembly.Fabric8Test,testLeaderElection
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/scholzj/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.17.2/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/scholzj/.m2/repository/org/slf4j/slf4j-reload4j/1.7.36/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$3 execute
INFO: MockWebServer[53855] starting to accept connections
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$3 execute
INFO: MockWebServer[53856] starting to accept connections
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 404 Client Error
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: POST /apis/coordination.k8s.io/v1/namespaces/test/leases HTTP/1.1 and responded: HTTP/1.1 201 OK
New leader elected f2ed2009-c168-4643-83c9-aa5a17d37da9
STARTED LEADERSHIP
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:28 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
Mar 11, 2023 7:53:30 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:30 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
Mar 11, 2023 7:53:32 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:32 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
Mar 11, 2023 7:53:34 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:34 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
Mar 11, 2023 7:53:36 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:36 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
Mar 11, 2023 7:53:38 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: GET /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 200 OK
Mar 11, 2023 7:53:38 PM okhttp3.mockwebserver.MockWebServer$4 processOneRequest
INFO: MockWebServer[53856] received request: PATCH /apis/coordination.k8s.io/v1/namespaces/test/leases/testlease HTTP/1.1 and responded: HTTP/1.1 415 Client Error
2023-03-11 19:53:38 ERROR LeaderElector:152 - Exception occurred while releasing lock 'LeaseLock: test - testlease (f2ed2009-c168-4643-83c9-aa5a17d37da9)'
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: PATCH at: https://localhost:53856/apis/coordination.k8s.io/v1/namespaces/test/leases/testlease. Message: Unsupported Media Type. Received status: Status(apiVersion=v1, code=415, details=StatusDetails(causes=[], group=null, kind=Unknown, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=Unsupported Media Type, metadata=null, reason=Invalid, status=Failure, additionalProperties={}).
	at io.fabric8.kubernetes.client.KubernetesClientException.copyAsCause(KubernetesClientException.java:238) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult(OperationSupport.java:546) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handleResponse(OperationSupport.java:566) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handlePatch(OperationSupport.java:443) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handlePatch(OperationSupport.java:420) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.BaseOperation.handlePatch(BaseOperation.java:717) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.lambda$patch$2(HasMetadataOperation.java:219) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:224) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:239) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation.patch(HasMetadataOperation.java:39) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extension.ResourceAdapter.patch(ResourceAdapter.java:305) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.resourcelock.ResourceLock.update(ResourceLock.java:65) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.release(LeaderElector.java:149) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.stopLeading(LeaderElector.java:130) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$null$1(LeaderElector.java:95) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$renewWithTimeout$6(LeaderElector.java:179) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.extended.leaderelection.LeaderElector.lambda$loop$8(LeaderElector.java:266) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: PATCH at: https://localhost:53856/apis/coordination.k8s.io/v1/namespaces/test/leases/testlease. Message: Unsupported Media Type. Received status: Status(apiVersion=v1, code=415, details=StatusDetails(causes=[], group=null, kind=Unknown, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=Unsupported Media Type, metadata=null, reason=Invalid, status=Failure, additionalProperties={}).
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.requestFailure(OperationSupport.java:701) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.requestFailure(OperationSupport.java:681) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.assertResponseCode(OperationSupport.java:630) ~[kubernetes-client-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.lambda$handleResponse$0(OperationSupport.java:591) ~[kubernetes-client-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$completeOrCancel$5(StandardHttpClient.java:120) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$completeOrCancel$5(StandardHttpClient.java:120) ~[kubernetes-client-api-6.5.0.jar:?]
	at io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$retryWithExponentialBackoff$7(StandardHttpClient.java:159) ~[kubernetes-client-api-6.5.0.jar:?]
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
	at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:844) ~[?:?]
	at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483) ~[?:?]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
STOPPED LEADERSHIP
Mar 11, 2023 7:53:38 PM okhttp3.mockwebserver.MockWebServer$3 acceptConnections
INFO: MockWebServer[53856] done accepting connections: Socket closed

Process finished with exit code 0

You can see the exception there as well as the Mock Server returning some 415 Client Error codes.



### Additional context

The same code works fine when run with Fabric8 6.3.1.

Also, it seems to work fine with 6.5.0 and actual Kubernetes cluster. So the issue is only with the Kubernetes Mock Server.
@shawkins
Copy link
Contributor

shawkins commented Mar 13, 2023

Relates to #4913 - Generally we don't require internal logic to work against the mock server, so this wasn't considered in the consolidation of the leader election logic. We can certainly modify the leader election to be something that the mock server supports more easily than we can add support into the mock server.

cc @csviri there are some thoughts that we'll be able to replace the crud mock server moving forward with some turnkey java/test support for a real api server so that we can avoid having limited support with our crud logic.

@csviri
Copy link
Contributor

csviri commented Mar 13, 2023

yes, will release v0.1 probably soon from here:
https://github.com/csviri/jenvtest

it's already working nicely, after some feedback and additional tests and features we can move it either under client or java operator sdk

shawkins added a commit to shawkins/kubernetes-client that referenced this issue Mar 18, 2023
shawkins added a commit to shawkins/kubernetes-client that referenced this issue Mar 18, 2023
@shawkins shawkins self-assigned this Mar 19, 2023
@manusa manusa added bug component/kubernetes-server-mock Deals with the kubernetes-server-mock directory mainly labels Mar 22, 2023
@manusa manusa added this to the 6.6.0 milestone Mar 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug component/kubernetes-server-mock Deals with the kubernetes-server-mock directory mainly
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants