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

Warning: Multiple httpclient implementation in the classpath #32937

Closed
mschorsch opened this issue Apr 27, 2023 · 25 comments
Closed

Warning: Multiple httpclient implementation in the classpath #32937

mschorsch opened this issue Apr 27, 2023 · 25 comments
Labels
area/kubernetes kind/bug Something isn't working triage/needs-feedback We are waiting for feedback.

Comments

@mschorsch
Copy link
Contributor

mschorsch commented Apr 27, 2023

Describe the bug

I wanted to upgrade one of our applications from Quarkus 2.16.6.Final to Quarkus 3.0.1.Final. The application starts but as soon as I use the Kubernetes client I get the following warning and exception in the console:

2023-04-27 07:48:35,213 WARN [io.fab.kub.cli.uti.HttpClientUtils] (vert.x-eventloop-thread-2) There are multiple httpclient implementation in the classpath, choosing the first non-default implementation. You should exclude dependencies that aren't needed or use an explicit association of the HttpClient.Factory.

2023-04-27 07:48:35,213 WARN  [io.fab.kub.cli.uti.HttpClientUtils] (vert.x-eventloop-thread-2) There are multiple httpclient implementation in the classpath, choosing the first non-default implementation. You should exclude dependencies that aren't needed or use an explicit association of the HttpClient.Factory.
2023-04-27 07:48:50,331 ERROR [de.bvu.tra.tim.htt.ExceptionMappers] (vert.x-eventloop-thread-2) An error has occurred.: io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
        at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:129)
        at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:122)
        at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult(OperationSupport.java:551)
        at io.fabric8.kubernetes.client.dsl.internal.BaseOperation.list(BaseOperation.java:424)
        at io.fabric8.kubernetes.client.dsl.internal.BaseOperation.list(BaseOperation.java:392)
        at io.fabric8.kubernetes.client.dsl.internal.BaseOperation.list(BaseOperation.java:93)
        at com.example.services.InstanceService.findDeployments(InstanceService.kt:105)
        at com.example.services.InstanceService.findApps(InstanceService.kt:86)
        at com.example.services.InstanceService_ClientProxy.findApps(Unknown Source)
        at com.example.http.MainResource.getIndexPage(MainResource.kt:87)
        at com.example.http.MainResource_Subclass.getIndexPage$$superforward(Unknown Source)
        at com.example.http.MainResource_Subclass$$function$$1.apply(Unknown Source)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:74)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext$NextAroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:100)
        at io.quarkus.security.runtime.interceptor.SecurityHandler.handle(SecurityHandler.java:27)
        at io.quarkus.security.runtime.interceptor.RolesAllowedInterceptor.intercept(RolesAllowedInterceptor.java:29)
        at io.quarkus.security.runtime.interceptor.RolesAllowedInterceptor_Bean.intercept(Unknown Source)
        at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:71)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:63)
        at io.quarkus.resteasy.reactive.server.runtime.StandardSecurityCheckInterceptor.intercept(StandardSecurityCheckInterceptor.java:44)
        at io.quarkus.resteasy.reactive.server.runtime.StandardSecurityCheckInterceptor_RolesAllowedInterceptor_Bean.intercept(Unknown Source)
        at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:38)
        at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:26)
        at com.example.http.MainResource_Subclass.getIndexPage(Unknown Source)
        at com.example.http.MainResource_ClientProxy.getIndexPage(Unknown Source)
        at com.example.http.MainResource$quarkusrestinvoker$getIndexPage_2ced74d2fee37c4b83002c0f48a53b817892c857.invoke(Unknown Source)
        at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
        at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
        at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:145)
        at org.jboss.resteasy.reactive.server.handlers.RestInitialHandler.beginProcessing(RestInitialHandler.java:48)
        at org.jboss.resteasy.reactive.server.vertx.ResteasyReactiveVertxHandler.handle(ResteasyReactiveVertxHandler.java:23)
        at org.jboss.resteasy.reactive.server.vertx.ResteasyReactiveVertxHandler.handle(ResteasyReactiveVertxHandler.java:10)
        at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
        at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
        at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
        at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:102)
        at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:88)
        at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
        at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:140)
        at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
        at io.vertx.ext.web.handler.impl.StaticHandlerImpl.lambda$sendStatic$1(StaticHandlerImpl.java:290)
        at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
        at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54)
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.concurrent.TimeoutException
        at java.base/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1960)
        at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095)
        at io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult(OperationSupport.java:528)
        ... 50 more

I guess the exception is due to the warning that there are multiple HTTP clients on the classpath?

Maven dependencies:

    <dependencies>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-hibernate-validator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy-reactive-qute</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-kotlin</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-kubernetes-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-oidc</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-config-yaml</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-arc</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-junit5</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>kotlin-extensions</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.cronutils</groupId>
            <artifactId>cron-utils</artifactId>
        </dependency>
    </dependencies>

How to Reproduce?

reproducer.zip

  1. ./mvnw quarkus:dev
  2. http://localhost:8080/hello

Output of java -version

Java 17

Quarkus version or git rev

3.0.1.Final

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

Maven 3.9.1

@mschorsch mschorsch added the kind/bug Something isn't working label Apr 27, 2023
@quarkus-bot
Copy link

quarkus-bot bot commented Apr 27, 2023

/cc @Sgitario (kubernetes), @evanchooly (kotlin), @geoand (kotlin,kubernetes), @iocanel (kubernetes)

@geoand
Copy link
Contributor

geoand commented Apr 27, 2023

Can you add the output of mvn dependency:tree please?

@mschorsch
Copy link
Contributor Author

Sure.

[INFO] com.example:my-app:jar:1.5-SNAPSHOT
[INFO] +- io.quarkus:quarkus-hibernate-validator:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-core:jar:3.0.1.Final:compile
[INFO] |  |  +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:4.0.1:compile
[INFO] |  |  |  \- jakarta.enterprise:jakarta.enterprise.lang-model:jar:4.0.1:compile
[INFO] |  |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:compile
[INFO] |  |  +- io.smallrye.common:smallrye-common-os:jar:2.1.0:compile
[INFO] |  |  +- io.quarkus:quarkus-ide-launcher:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-development-mode-spi:jar:3.0.1.Final:compile
[INFO] |  |  +- io.smallrye.config:smallrye-config:jar:3.2.1:compile
[INFO] |  |  |  \- io.smallrye.config:smallrye-config-core:jar:3.2.1:compile
[INFO] |  |  |     \- io.smallrye.common:smallrye-common-expression:jar:2.1.0:compile
[INFO] |  |  |        \- io.smallrye.common:smallrye-common-function:jar:2.1.0:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.5.0.Final:compile
[INFO] |  |  +- org.jboss.logmanager:jboss-logmanager-embedded:jar:1.1.1:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging-annotations:jar:2.2.1.Final:compile
[INFO] |  |  +- org.jboss.threads:jboss-threads:jar:3.5.0.Final:compile
[INFO] |  |  +- org.jboss.slf4j:slf4j-jboss-logmanager:jar:2.0.0.Final:compile
[INFO] |  |  +- org.graalvm.sdk:graal-sdk:jar:22.3.0:compile
[INFO] |  |  +- org.wildfly.common:wildfly-common:jar:1.5.4.Final-format-001:compile
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-runner:jar:3.0.1.Final:compile
[INFO] |  |  \- io.quarkus:quarkus-fs-util:jar:0.0.9:compile
[INFO] |  +- org.hibernate.validator:hibernate-validator:jar:8.0.0.Final:compile
[INFO] |  |  +- jakarta.validation:jakarta.validation-api:jar:3.0.2:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.5.1:compile
[INFO] |  +- org.glassfish.expressly:expressly:jar:5.0.0:compile
[INFO] |  |  \- jakarta.el:jakarta.el-api:jar:5.0.1:compile
[INFO] |  +- io.smallrye.config:smallrye-config-validator:jar:3.2.1:compile
[INFO] |  \- jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0:compile
[INFO] +- io.quarkus:quarkus-resteasy-reactive-qute:jar:3.0.1.Final:compile
[INFO] |  \- io.quarkus:quarkus-qute:jar:3.0.1.Final:compile
[INFO] |     \- io.quarkus.qute:qute-core:jar:3.0.1.Final:compile
[INFO] +- io.quarkus:quarkus-resteasy-reactive-jackson:jar:3.0.1.Final:compile
[INFO] |  \- io.quarkus:quarkus-resteasy-reactive-jackson-common:jar:3.0.1.Final:compile
[INFO] |     \- io.quarkus.resteasy.reactive:resteasy-reactive-jackson:jar:3.0.1.Final:compile
[INFO] +- io.quarkus:quarkus-resteasy-reactive:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-resteasy-reactive-common:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus.resteasy.reactive:resteasy-reactive-common:jar:3.0.1.Final:compile
[INFO] |  |  |  +- io.quarkus.resteasy.reactive:resteasy-reactive-common-types:jar:3.0.1.Final:compile
[INFO] |  |  |  +- org.reactivestreams:reactive-streams:jar:1.0.4:compile
[INFO] |  |  |  \- io.smallrye.reactive:mutiny-zero-flow-adapters:jar:1.0.0:compile
[INFO] |  |  \- io.quarkus:quarkus-mutiny:jar:3.0.1.Final:compile
[INFO] |  |     +- io.quarkus:quarkus-smallrye-context-propagation:jar:3.0.1.Final:compile
[INFO] |  |     |  \- io.smallrye:smallrye-context-propagation:jar:2.1.0:compile
[INFO] |  |     |     +- io.smallrye:smallrye-context-propagation-api:jar:2.1.0:compile
[INFO] |  |     |     \- io.smallrye:smallrye-context-propagation-storage:jar:2.1.0:compile
[INFO] |  |     \- io.smallrye.reactive:mutiny-smallrye-context-propagation:jar:2.1.0:compile
[INFO] |  +- io.quarkus.resteasy.reactive:resteasy-reactive-vertx:jar:3.0.1.Final:compile
[INFO] |  |  +- io.vertx:vertx-web:jar:4.4.1:compile
[INFO] |  |  |  +- io.vertx:vertx-web-common:jar:4.4.1:compile
[INFO] |  |  |  +- io.vertx:vertx-auth-common:jar:4.4.1:compile
[INFO] |  |  |  \- io.vertx:vertx-bridge-common:jar:4.4.1:compile
[INFO] |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-core:jar:3.3.0:compile
[INFO] |  |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:jar:3.3.0:compile
[INFO] |  |  |  \- io.smallrye.reactive:vertx-mutiny-generator:jar:3.3.0:compile
[INFO] |  |  |     \- io.vertx:vertx-codegen:jar:4.4.1:compile
[INFO] |  |  +- io.quarkus.resteasy.reactive:resteasy-reactive:jar:3.0.1.Final:compile
[INFO] |  |  \- org.jboss.logging:commons-logging-jboss-logging:jar:1.0.0.Final:compile
[INFO] |  +- io.quarkus:quarkus-vertx-http:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-security-runtime-spi:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-credentials:jar:3.0.1.Final:compile
[INFO] |  |  +- io.smallrye.common:smallrye-common-vertx-context:jar:2.1.0:compile
[INFO] |  |  +- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus.security:quarkus-security:jar:2.0.2.Final:compile
[INFO] |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-web:jar:3.3.0:compile
[INFO] |  |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-web-common:jar:3.3.0:compile
[INFO] |  |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:jar:3.3.0:compile
[INFO] |  |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:jar:3.3.0:compile
[INFO] |  |  |  \- io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:jar:3.3.0:compile
[INFO] |  |  \- io.github.crac:org-crac:jar:0.1.3:compile
[INFO] |  \- io.quarkus:quarkus-jsonp:jar:3.0.1.Final:compile
[INFO] |     \- org.eclipse.parsson:parsson:jar:1.1.1:compile
[INFO] |        \- jakarta.json:jakarta.json-api:jar:2.1.1:compile
[INFO] +- io.quarkus:quarkus-kotlin:jar:3.0.1.Final:compile
[INFO] |  +- org.jetbrains:annotations:jar:24.0.1:compile
[INFO] |  +- org.jetbrains.kotlin:kotlin-stdlib:jar:1.8.10:compile
[INFO] |  |  \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.8.10:compile
[INFO] |  +- org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.8.10:compile
[INFO] |  |  \- org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.8.10:compile
[INFO] |  +- org.jetbrains.kotlin:kotlin-reflect:jar:1.8.10:compile
[INFO] |  +- io.smallrye.reactive:mutiny-kotlin:jar:2.1.0:compile
[INFO] |  |  +- io.smallrye.reactive:mutiny:jar:2.1.0:compile
[INFO] |  |  \- org.jetbrains.kotlinx:kotlinx-coroutines-core:jar:1.6.4:compile
[INFO] |  +- io.smallrye:smallrye-fault-tolerance-kotlin:jar:6.2.2:compile
[INFO] |  \- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:jar:1.6.4:compile
[INFO] |     \- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:jar:1.6.4:compile
[INFO] +- io.quarkus:quarkus-kubernetes-client:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-kubernetes-client-internal:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-jackson:jar:3.0.1.Final:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.14.2:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.2:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.14.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.14.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.14.2:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.14.2:compile
[INFO] |  +- io.quarkus:quarkus-vertx:jar:3.0.1.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-netty:jar:3.0.1.Final:compile
[INFO] |  |  |  +- io.netty:netty-codec:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-codec-http:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-codec-http2:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-handler:jar:4.1.90.Final:compile
[INFO] |  |  |  |  \- io.netty:netty-transport-native-unix-common:jar:4.1.90.Final:compile
[INFO] |  |  |  \- com.aayushatharva.brotli4j:brotli4j:jar:1.11.0:compile
[INFO] |  |  |     +- com.aayushatharva.brotli4j:service:jar:1.11.0:compile
[INFO] |  |  |     \- com.aayushatharva.brotli4j:native-linux-x86_64:jar:1.11.0:compile
[INFO] |  |  +- io.netty:netty-codec-haproxy:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-buffer:jar:4.1.90.Final:compile
[INFO] |  |  |  \- io.netty:netty-transport:jar:4.1.90.Final:compile
[INFO] |  |  +- io.smallrye.common:smallrye-common-annotation:jar:2.1.0:compile
[INFO] |  |  +- io.quarkus:quarkus-vertx-latebound-mdc-provider:jar:3.0.1.Final:compile
[INFO] |  |  \- io.smallrye:smallrye-fault-tolerance-vertx:jar:6.2.2:compile
[INFO] |  +- io.fabric8:kubernetes-client:jar:6.5.1:compile
[INFO] |  |  +- io.fabric8:kubernetes-client-api:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-core:jar:6.5.1:compile
[INFO] |  |  |  |  \- io.fabric8:kubernetes-model-common:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-gatewayapi:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-resource:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-rbac:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-admissionregistration:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-apps:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-autoscaling:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-apiextensions:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-batch:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-certificates:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-coordination:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-discovery:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-events:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-extensions:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-flowcontrol:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-networking:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-metrics:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-policy:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-scheduling:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-storageclass:jar:6.5.1:compile
[INFO] |  |  |  +- io.fabric8:kubernetes-model-node:jar:6.5.1:compile
[INFO] |  |  |  +- org.snakeyaml:snakeyaml-engine:jar:2.6:compile
[INFO] |  |  |  \- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.14.2:compile
[INFO] |  |  \- io.fabric8:zjsonpatch:jar:0.3.0:compile
[INFO] |  +- io.fabric8:kubernetes-httpclient-vertx:jar:6.5.1:compile
[INFO] |  |  +- io.vertx:vertx-core:jar:4.4.1:compile
[INFO] |  |  |  +- io.netty:netty-common:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-handler-proxy:jar:4.1.90.Final:compile
[INFO] |  |  |  |  \- io.netty:netty-codec-socks:jar:4.1.90.Final:compile
[INFO] |  |  |  +- io.netty:netty-resolver:jar:4.1.90.Final:compile
[INFO] |  |  |  \- io.netty:netty-resolver-dns:jar:4.1.90.Final:compile
[INFO] |  |  |     \- io.netty:netty-codec-dns:jar:4.1.90.Final:compile
[INFO] |  |  \- io.vertx:vertx-web-client:jar:4.4.1:compile
[INFO] |  |     \- io.vertx:vertx-uri-template:jar:4.4.1:compile
[INFO] |  +- org.apache.commons:commons-compress:jar:1.23.0:compile
[INFO] |  +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:compile
[INFO] |  |  \- jakarta.activation:jakarta.activation-api:jar:2.1.1:compile
[INFO] |  \- io.smallrye.config:smallrye-config-source-yaml:jar:3.2.1:compile
[INFO] |     +- org.yaml:snakeyaml:jar:2.0:compile
[INFO] |     +- io.smallrye.config:smallrye-config-common:jar:3.2.1:compile
[INFO] |     |  \- io.smallrye.common:smallrye-common-classloader:jar:2.1.0:compile
[INFO] |     \- io.smallrye.common:smallrye-common-constraint:jar:2.1.0:compile
[INFO] +- io.quarkus:quarkus-oidc:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-security:jar:3.0.1.Final:compile
[INFO] |  |  \- jakarta.interceptor:jakarta.interceptor-api:jar:2.1.0:compile
[INFO] |  +- io.quarkus:quarkus-oidc-common:jar:3.0.1.Final:compile
[INFO] |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-web-client:jar:3.3.0:compile
[INFO] |  |  \- io.quarkus:quarkus-smallrye-jwt-build:jar:3.0.1.Final:compile
[INFO] |  |     \- io.smallrye:smallrye-jwt-build:jar:4.2.1:compile
[INFO] |  \- io.smallrye:smallrye-jwt:jar:4.2.1:compile
[INFO] |     +- org.eclipse.microprofile.jwt:microprofile-jwt-auth-api:jar:2.1:compile
[INFO] |     +- org.bitbucket.b_c:jose4j:jar:0.9.3:compile
[INFO] |     \- io.smallrye:smallrye-jwt-common:jar:4.2.1:compile
[INFO] +- io.quarkus:quarkus-config-yaml:jar:3.0.1.Final:compile
[INFO] |  \- org.eclipse.microprofile.config:microprofile-config-api:jar:3.0.3:compile
[INFO] +- io.quarkus:quarkus-arc:jar:3.0.1.Final:compile
[INFO] |  +- io.quarkus.arc:arc:jar:3.0.1.Final:compile
[INFO] |  |  \- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
[INFO] |  \- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:jar:1.3:compile
[INFO] +- io.quarkus:quarkus-junit5:jar:3.0.1.Final:test
[INFO] |  +- io.quarkus:quarkus-bootstrap-core:jar:3.0.1.Final:test
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-app-model:jar:3.0.1.Final:test
[INFO] |  |  \- io.smallrye.common:smallrye-common-io:jar:2.1.0:compile
[INFO] |  +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.5:test
[INFO] |  +- io.quarkus:quarkus-test-common:jar:3.0.1.Final:test
[INFO] |  |  +- io.quarkus:quarkus-core-deployment:jar:3.0.1.Final:test
[INFO] |  |  |  +- org.aesh:readline:jar:2.4:test
[INFO] |  |  |  |  \- org.fusesource.jansi:jansi:jar:2.4.0:test
[INFO] |  |  |  +- org.aesh:aesh:jar:2.7:test
[INFO] |  |  |  +- org.apache.commons:commons-lang3:jar:3.12.0:test
[INFO] |  |  |  +- io.quarkus.gizmo:gizmo:jar:1.6.0.Final:test
[INFO] |  |  |  |  \- org.ow2.asm:asm-util:jar:9.5:test
[INFO] |  |  |  |     \- org.ow2.asm:asm-analysis:jar:9.5:test
[INFO] |  |  |  +- org.ow2.asm:asm:jar:9.5:test
[INFO] |  |  |  +- org.ow2.asm:asm-commons:jar:9.5:test
[INFO] |  |  |  |  \- org.ow2.asm:asm-tree:jar:9.5:test
[INFO] |  |  |  +- io.quarkus:quarkus-class-change-agent:jar:3.0.1.Final:test
[INFO] |  |  |  +- io.quarkus:quarkus-devtools-utilities:jar:3.0.1.Final:test
[INFO] |  |  |  +- io.quarkus:quarkus-builder:jar:3.0.1.Final:test
[INFO] |  |  |  \- org.junit.platform:junit-platform-launcher:jar:1.9.2:test
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-maven-resolver:jar:3.0.1.Final:test
[INFO] |  |  |  +- io.smallrye.beanbag:smallrye-beanbag-maven:jar:1.1.0:test
[INFO] |  |  |  |  +- io.smallrye.beanbag:smallrye-beanbag-sisu:jar:1.1.0:test
[INFO] |  |  |  |  |  \- io.smallrye.beanbag:smallrye-beanbag:jar:1.1.0:test
[INFO] |  |  |  |  +- javax.inject:javax.inject:jar:1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-artifact:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-builder-support:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-model:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-model-builder:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-repository-metadata:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-settings:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-api:jar:1.9.7:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-impl:jar:1.9.7:test
[INFO] |  |  |  |  |  \- org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.7:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-spi:jar:1.9.7:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-util:jar:1.9.7:test
[INFO] |  |  |  |  +- org.apache.maven.wagon:wagon-provider-api:jar:3.5.3:test
[INFO] |  |  |  |  +- org.apache.maven.wagon:wagon-http-lightweight:jar:3.5.3:test
[INFO] |  |  |  |  +- org.apache.maven.wagon:wagon-http-shared:jar:3.5.3:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-interpolation:jar:1.26:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-utils:jar:3.5.1:test
[INFO] |  |  |  |  +- org.sonatype.plexus:plexus-cipher:jar:1.7:test
[INFO] |  |  |  |  \- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:test
[INFO] |  |  |  +- org.apache.maven:maven-embedder:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven:maven-core:jar:3.9.1:test
[INFO] |  |  |  |  |  \- org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:test
[INFO] |  |  |  |  +- org.apache.maven:maven-plugin-api:jar:3.9.1:test
[INFO] |  |  |  |  +- org.apache.maven.shared:maven-shared-utils:jar:3.3.4:test
[INFO] |  |  |  |  +- com.google.inject:guice:jar:5.1.0:test
[INFO] |  |  |  |  |  \- aopalliance:aopalliance:jar:1.0:test
[INFO] |  |  |  |  +- com.google.guava:guava:jar:31.1-jre:test
[INFO] |  |  |  |  +- com.google.guava:failureaccess:jar:1.0.1:test
[INFO] |  |  |  |  +- javax.annotation:javax.annotation-api:jar:1.3.2:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-classworlds:jar:2.6.0:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-sec-dispatcher:jar:2.0:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-cipher:jar:2.0:test
[INFO] |  |  |  |  \- commons-cli:commons-cli:jar:1.4:test
[INFO] |  |  |  +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.5:test
[INFO] |  |  |  +- org.apache.maven:maven-settings-builder:jar:3.9.1:test
[INFO] |  |  |  +- org.apache.maven:maven-resolver-provider:jar:3.9.1:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.7:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.7:test
[INFO] |  |  |  +- org.apache.maven.wagon:wagon-http:jar:3.5.3:test
[INFO] |  |  |  \- org.apache.maven.wagon:wagon-file:jar:3.5.3:test
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-gradle-resolver:jar:3.0.1.Final:test
[INFO] |  |  +- io.smallrye:jandex:jar:3.0.5:test
[INFO] |  |  \- commons-io:commons-io:jar:2.11.0:test
[INFO] |  +- io.quarkus:quarkus-junit5-properties:jar:3.0.1.Final:test
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.9.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.9.2:test
[INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |  |  |  +- org.junit.platform:junit-platform-commons:jar:1.9.2:test
[INFO] |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.9.2:test
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.9.2:test
[INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.9.2:test
[INFO] |  \- com.thoughtworks.xstream:xstream:jar:1.4.20:test
[INFO] |     \- io.github.x-stream:mxparser:jar:1.2.2:test
[INFO] |        \- xmlpull:xmlpull:jar:1.1.3.1:test
[INFO] +- io.rest-assured:kotlin-extensions:jar:5.3.0:test
[INFO] |  \- io.rest-assured:rest-assured:jar:5.3.0:test
[INFO] |     +- org.apache.groovy:groovy:jar:4.0.6:test
[INFO] |     +- org.apache.groovy:groovy-xml:jar:4.0.6:test
[INFO] |     +- org.apache.httpcomponents:httpclient:jar:4.5.14:test
[INFO] |     |  +- org.apache.httpcomponents:httpcore:jar:4.4.16:test
[INFO] |     |  \- commons-codec:commons-codec:jar:1.15:test
[INFO] |     +- org.apache.httpcomponents:httpmime:jar:4.5.14:test
[INFO] |     +- org.hamcrest:hamcrest:jar:2.1:test
[INFO] |     +- org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1:test
[INFO] |     +- io.rest-assured:json-path:jar:5.3.0:test
[INFO] |     |  +- org.apache.groovy:groovy-json:jar:4.0.6:test
[INFO] |     |  \- io.rest-assured:rest-assured-common:jar:5.3.0:test
[INFO] |     \- io.rest-assured:xml-path:jar:5.3.0:test
[INFO] \- com.cronutils:cron-utils:jar:9.2.1:compile
[INFO]    \- org.slf4j:slf4j-api:jar:2.0.6:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.562 s
[INFO] Finished at: 2023-04-27T08:36:44+02:00
[INFO] ------------------------------------------------------------------------

@geoand
Copy link
Contributor

geoand commented Apr 27, 2023

That's interesting as it looks like there is only one dependency bringing in an client implementation.

Would it be possible to attach a sample application so we can debug and find out what's going on?

Thanks

@geoand geoand added the triage/needs-feedback We are waiting for feedback. label Apr 27, 2023
@mschorsch
Copy link
Contributor Author

mschorsch commented Apr 27, 2023

@geoand I'v added a reproducer in the description for the warning "There are multiple httpclient implementation in the classpath, choosing the first non-default implementation. ..."

@geoand geoand removed the triage/needs-feedback We are waiting for feedback. label Apr 27, 2023
@Sgitario
Copy link
Contributor

This issue should have been fixed by #31582.
However, the fix does not work for DEV mode (I tried the reproducer running the JAR, and the warning message is gone). I guess this does not work for DEV mode.

@geoand Any ideas if there is a similar build item for DEV mode?

@geoand
Copy link
Contributor

geoand commented Apr 28, 2023

It should work in dev mode as well AFAIR.

I won't have time to look into it, but I don't think there is another build item

@mschorsch
Copy link
Contributor Author

mschorsch commented Apr 28, 2023

@Sgitario Do you think that the presence of multiple http clients ist the cause of the KubernetesClientException (not contained in the reproducer)? If not, then there is a additional issue in Quarkus 3.0.1.

@Sgitario
Copy link
Contributor

I didn't hit into the KubernetesClientException issue either in DEV mode or using the JAR.

Can you try to reproduce it running the application using the JAR file instead of running it in DEV mode?

@mschorsch
Copy link
Contributor Author

I didn't hit into the KubernetesClientException issue either in DEV mode or using the JAR.

Yes. It cant bei reproduced with my reproducer, only the warning. I guess the "wrong" http client is chosen and this leads to the KubernetesClientException.

Can you try to reproduce it running the application using the JAR file instead of running it in DEV mode?

I will try.

@mschorsch
Copy link
Contributor Author

mschorsch commented Apr 28, 2023

The warning disappeard in prod mode (running the jar).

But I continue to see the KubernetesClientException and now additionally io.vertx.core.VertxException: thread blocked even though the REST method do not have a reactive return type (Uni, Mutli, suspend method) and also the REST methods are not annotated with @Blocking. The REST methods return a TemplateInstance (Qute). Is Qute now executed on the IO threads by default?

@Sgitario
Copy link
Contributor

But I continue to see the KubernetesClientException and now additionally io.vertx.core.VertxException: thread blocked even though the REST method do not have a reactive return type (Uni, Mutli, suspend method) and also the REST methods are not annotated with @Blocking. The REST methods return a TemplateInstance (Qute). Is Qute now executed on the IO threads by default?

This would definitely be another issue, different from this one. Please, report a new issue with the steps we can follow to reproduce it (I could not see this error), so we can help you better.

@mschorsch
Copy link
Contributor Author

After annotating all REST methods with @Blocking, no exception is thrown and the application works as expected, but you're right, this is another issue. I will open a new issue.

@metacosm
Copy link
Contributor

The exception should be unrelated to the warning, but I might be wrong. I will try to take a look at what's going on as well, but probably not before next Wednesday.

@mschorsch
Copy link
Contributor Author

mschorsch commented Apr 30, 2023

Results summarized so far:

  1. The warning "multiple httpclient implementation in the classpath" is only displayed in dev mode and not in prod mode. The warning can be reproduced with the reproducer I provided.
  2. The exception KubernetesClientException is thrown in both dev mode and prod mode. The exception is thrown when a Rest method returns a Qute TemplateInstance and in this or in one of the dependent methods the Kubernetes Client is used e.g. to find deployments. If the Rest method is annotated with @Blocking then no exception is thrown. Hard to say if this is a result of the warning. With the reproducer provided, this case cannot be recreated.

@ggallen
Copy link

ggallen commented May 1, 2023

@metacosm , I have a test case for #2 above. I am seeing the same behavior.

@manusa
Copy link
Contributor

manusa commented May 4, 2023

/cc @shawkins

The log warning should be fixed now.

Regarding the second problem (timeout), looks very similar to fabric8io/kubernetes-client#5091 (comment). Maybe caused by a deadlock and having only one IO thread available to process the HTTP response results.

@mschorsch
Copy link
Contributor Author

mschorsch commented May 4, 2023

The log warning should be fixed now.

I can confirm that the warning no longer appears in Quarkus 3.0.2.Final.

Regarding the second problem (timeout), looks very similar to fabric8io/kubernetes-client#5091 (comment). Maybe caused by a deadlock and having only one IO thread available to process the HTTP response results.

Seems likely

@shawkins
Copy link
Contributor

shawkins commented May 4, 2023

The log warning should be fixed now.

Or at least it will be clearer what the situation is - the may still be a warning log, but it will indicate what all of the implementations are.

@geoand
Copy link
Contributor

geoand commented Jun 27, 2023

What's the status of this in Quarkus 3.2.0.CR1?

@geoand geoand added the triage/needs-feedback We are waiting for feedback. label Jun 27, 2023
@mschorsch
Copy link
Contributor Author

What's the status of this in Quarkus 3.2.0.CR1?

The second problem (timeout) still exists.

Has the kubernetes client been upgraded to 6.6.0 in Quarkus 3.2.0.CR1 (see fabric8io/kubernetes-client#5091)?

@geoand
Copy link
Contributor

geoand commented Jun 27, 2023

Has the kubernetes client been upgraded to 6.6.0 in Quarkus 3.2.0.CR1 (see fabric8io/kubernetes-client#5091)?

We have moved even further: https://mvnrepository.com/artifact/io.quarkus/quarkus-kubernetes-client/3.2.0.CR1

@geoand geoand removed the triage/needs-feedback We are waiting for feedback. label Jun 29, 2023
@geoand
Copy link
Contributor

geoand commented Mar 5, 2024

Is this still a problem with Quarkus 3.8?

@geoand geoand added the triage/needs-feedback We are waiting for feedback. label Mar 5, 2024
@mschorsch
Copy link
Contributor Author

I cannot reproduce it anymore.

@geoand
Copy link
Contributor

geoand commented Mar 5, 2024

Thanks a lot for checking!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/kubernetes kind/bug Something isn't working triage/needs-feedback We are waiting for feedback.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants