Quarkus IllegalStateException: The current thread cannot be blocked: vert.x-eventloop-thread
Environment
- Quarkus
- Reactive
Issue
- Reactive programming/libraries not able to connect with HarshiCorp Vault due to blocking thread. This is working in non-reactive mode. Error with reactive:
jakarta.enterprise.inject.CreationException: Error creating synthetic bean [7weXgYHcaRck_k2l7dGKfXZMdD8]: java.lang.IllegalStateException: The current thread cannot be blocked: vert.x-eventloop-thread-1 io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_Bean.doCreate(Unknown Source) io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_Bean.create(Unknown Source) io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_Bean.create(Unknown Source) io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119) io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38) io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35) io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c135(Unknown Source) io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source) io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35) io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:21) io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_ClientProxy.arc$delegate(Unknown Source) io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_ClientProxy.query(Unknown Source) io.quarkus.reactive.datasource.runtime.ReactiveDatasourceHealthCheck.lambda$call$1(ReactiveDatasourceHealthCheck.java:60) io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270) io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:252) io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50) io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998) io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalStateException: The current thread cannot be blocked: vert.x-eventloop-thread-1 io.smallrye.mutiny.operators.uni.UniBlockingAwait.await(UniBlockingAwait.java:30) io.smallrye.mutiny.groups.UniAwait.atMost(UniAwait.java:65) io.smallrye.mutiny.groups.UniAwait.indefinitely(UniAwait.java:46) io.quarkus.vault.runtime.VaultCredentialsProvider.getCredentials(VaultCredentialsProvider.java:55) io.quarkus.vault.runtime.VaultCredentialsProvider_ClientProxy.getCredentials(Unknown Source) io.quarkus.reactive.pg.client.runtime.PgPoolRecorder.lambda$toPgConnectOptions$1(PgPoolRecorder.java:200) java.base/java.util.ArrayList.forEach(ArrayList.java:1511) io.quarkus.reactive.pg.client.runtime.PgPoolRecorder.toPgConnectOptions(PgPoolRecorder.java:190) io.quarkus.reactive.pg.client.runtime.PgPoolRecorder.initialize(PgPoolRecorder.java:115) io.quarkus.reactive.pg.client.runtime.PgPoolRecorder$2.apply(PgPoolRecorder.java:64) io.quarkus.reactive.pg.client.runtime.PgPoolRecorder$2.apply(PgPoolRecorder.java:61) io.vertx.pgclient.PgPool_7weXgYHcaRck_k2l7dGKfXZMdD8_Synthetic_Bean.createSynthetic(Unknown Source)
... 24 more
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments