vertx-rx icon indicating copy to clipboard operation
vertx-rx copied to clipboard

JZlib not in the classpath

Open hantsy opened this issue 8 months ago • 12 comments

I tried to clean up my Vertx example project to Vertx 5.0.0, when cleaning the Rxjava3 examples, encountered an issue.

The codes used to start a HTTP server is like this:

  return vertx.createHttpServer()
      .requestHandler(router)
      .rxListen(8888)
      .doOnSuccess(server -> {
          log.info("HTTP server started on port " + server.actualPort());
      })
      .doOnError(throwable -> {
          log.error("Failed to start HTTP server:" + throwable.getMessage());
      })
      .ignoreElement();

And I defined a simple /hello endpont in the router.

router.get("/hello").handler(rc -> rc.response().rxEnd("Hello from my route"));

Version

Windows 10 Pro vertx 5.0.0 Java 21

Context

I encountered an exception which looks suspicious while hiting the hello endpoint

[INFO] [stdout] 2025-05-16 14:12:27,321 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: -Dio.netty.noJdkZlibDecoder: false
[INFO] [stdout] 2025-05-16 14:12:27,322 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: -Dio.netty.noJdkZlibEncoder: false
[INFO] [stdout] 2025-05-16 14:12:27,323 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: JZlib not in the classpath; the only window bits supported value will be 15

Do you have a reproducer?

  • https://github.com/hantsy/vertx-sandbox

Steps to reproduce

  1. git clone https://github.com/hantsy/vertx-sandbox
  2. cd vertx-sandbox
  3. docker compose docker-compose.yml
  4. cd rxjava3
  5. mvn clean package exec:java -DskipTests
  6. Or java -jar ...-fat.jar after build

hantsy avatar May 16 '25 06:05 hantsy

can you provide a reproducer that does not use docker compose ?

vietj avatar May 16 '25 06:05 vietj

@vietj Create a new project from scratch, see this attchment.

rxjava3-issue.zip

hantsy avatar May 16 '25 07:05 hantsy

how does that work ? I ran mvn test and everything worked

vietj avatar May 17 '25 08:05 vietj

What OS you are using?

I was using Windows 10.

Let's wait for others to confirm this.

hantsy avatar May 17 '25 09:05 hantsy

@vietj The test is empty.

Run the project via mvn clean package exec:java

Or run in another terminal java -jar xxx-fat.jar after build.

Then hit the /hello endpoint via curl http://localhost:8888/hello

hantsy avatar May 17 '25 10:05 hantsy

This does not seem to be an exception to me, it is just a log line that explain that JZlib is not available and is not an error

vietj avatar May 17 '25 11:05 vietj

Yes, but the endpoint is blocked, no returned result.

hantsy avatar May 17 '25 12:05 hantsy

When searching JZlib in rxjava3 github sources, can not find such a dependency.

hantsy avatar May 17 '25 13:05 hantsy

ah it works for me on OSX

I don't have windows, can you can you try debug it ?

vietj avatar May 17 '25 15:05 vietj

Step into the calling stack, got the exception in the console.

2025-05-18 19:31:25,730 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 10024 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at java.base/java.util.Arrays.copyOf(Arrays.java:3538)
	at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:242)
	at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587)
	at java.base/java.lang.StringBuilder.append(StringBuilder.java:179)
	at java.base/java.util.jar.JarFile.getVersionedEntry(JarFile.java:614)
	at java.base/java.util.jar.JarFile.getEntry(JarFile.java:510)
	at java.base/java.util.jar.JarFile.getJarEntry(JarFile.java:471)
	at java.base/jdk.internal.loader.URLClassPath$JarLoader.getResource(URLClassPath.java:923)
	at java.base/jdk.internal.loader.URLClassPath.getResource(URLClassPath.java:316)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:757)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at io.vertx.core.http.HttpMethod.<clinit>(HttpMethod.java:192)
	at io.vertx.ext.web.impl.RouterImpl.get(RouterImpl.java:109)
	at io.vertx.rxjava3.ext.web.Router.get(Router.java:209)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:28,728 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 13064 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:37,949 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 22285 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.ext.web.impl.RouteImpl.handler(RouteImpl.java:140)
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:40,642 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 24977 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.ext.web.impl.RouteImpl.handler(RouteImpl.java:143)
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:42,506 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 26842 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.ext.web.impl.RouteImpl.handler(RouteImpl.java:145)
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:44,231 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 28567 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.ext.web.impl.RouteImpl.handler(RouteImpl.java:149)
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:48,182 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 32503 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.ext.web.impl.RouteImpl.handler(RouteImpl.java:153)
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:182)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:56,059 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 40396 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:183)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:31:59,174 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 43511 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.rxjava3.ext.web.Route.handler(Route.java:183)
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:32:06,038 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 50371 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at com.example.starter.MainVerticle.routes(MainVerticle.java:24)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:32:31,636 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 75972 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at com.example.starter.MainVerticle.routes(MainVerticle.java:25)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:32:40,867 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 85203 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:02,125 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 106446 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at java.base/jdk.internal.loader.URLClassPath$JarLoader.getResource(URLClassPath.java:928)
	at java.base/jdk.internal.loader.URLClassPath.getResource(URLClassPath.java:316)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:757)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at io.vertx.rxjava3.core.http.HttpServer.requestHandler(HttpServer.java:117)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:05,442 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 109778 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.core.http.impl.HttpServerImpl.requestHandler(HttpServerImpl.java:104)
	at io.vertx.rxjava3.core.http.HttpServer.requestHandler(HttpServer.java:117)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:07,691 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 112028 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.core.http.impl.HttpServerImpl.requestHandler(HttpServerImpl.java:108)
	at io.vertx.rxjava3.core.http.HttpServer.requestHandler(HttpServer.java:117)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:13,538 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 117873 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.rxjava3.core.http.HttpServer.requestHandler(HttpServer.java:118)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:15)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:20,813 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 123230 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:16)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
2025-05-18 19:33:32,002 WARN  [vertx-blocked-thread-checker] i.v.c.l.SLF4JLogDelegate: Thread vert.x-eventloop-thread-0 has been blocked for 136336 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
	at java.base/java.lang.Object.clone(Native Method)
	at java.base/java.lang.invoke.MethodTypeForm.canonicalizeAll(MethodTypeForm.java:288)
	at java.base/java.lang.invoke.MethodTypeForm.canonicalize(MethodTypeForm.java:243)
	at java.base/java.lang.invoke.MethodTypeForm.findForm(MethodTypeForm.java:220)
	at java.base/java.lang.invoke.MethodType.makeImpl(MethodType.java:407)
	at java.base/java.lang.invoke.MethodType.methodType(MethodType.java:373)
	at java.base/java.lang.invoke.MethodHandleNatives.findMethodHandleType(MethodHandleNatives.java:411)
	at io.vertx.rxjava3.core.http.HttpServer.rxListen(HttpServer.java:386)
	at com.example.starter.MainVerticle.rxStart(MainVerticle.java:16)
	at io.vertx.rxjava3.core.AbstractVerticle.start(AbstractVerticle.java:39)
	at io.vertx.core.AbstractVerticle.deploy(AbstractVerticle.java:106)
	at io.vertx.core.impl.deployment.DefaultDeployment.lambda$deploy$1(DefaultDeployment.java:183)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:249)
	at io.vertx.core.internal.ContextInternal.dispatch(ContextInternal.java:231)
	at io.vertx.core.internal.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:180)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	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:1583)
May 18, 2025 7:33:32 PM org.junit.jupiter.engine.execution.JupiterEngineExecutionContext close
SEVERE: Caught exception while closing extension context: org.junit.jupiter.engine.descriptor.MethodExtensionContext@1bc53649
java.util.concurrent.TimeoutException: Closing the Vertx context timed out
	at io.vertx.junit5.VertxParameterProvider.lambda$parameterClosingConsumer$1(VertxParameterProvider.java:83)
	at io.vertx.junit5.ScopedObject.close(ScopedObject.java:45)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$closeAllStoredCloseableValues$3(ExtensionValuesStore.java:68)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.junit.jupiter.engine.execution.ExtensionValuesStore.closeAllStoredCloseableValues(ExtensionValuesStore.java:68)
	at org.junit.jupiter.engine.descriptor.AbstractExtensionContext.close(AbstractExtensionContext.java:80)
	at org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.close(JupiterEngineExecutionContext.java:53)
	at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.cleanUp(JupiterTestDescriptor.java:222)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$cleanUp$1(TestMethodTestDescriptor.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.cleanUp(TestMethodTestDescriptor.java:155)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.cleanUp(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$cleanUp$10(NodeTestTask.java:167)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.cleanUp(NodeTestTask.java:167)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:98)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:56)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)


java.util.concurrent.TimeoutException: The test execution timed out. Make sure your asynchronous code includes calls to either VertxTestContext#completeNow(), VertxTestContext#failNow() or Checkpoint#flag()

Unsatisfied checkpoints diagnostics:


	at io.vertx.junit5.VertxExtension.joinActiveTestContexts(VertxExtension.java:216)
	at io.vertx.junit5.VertxExtension.interceptBeforeEachMethod(VertxExtension.java:149)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:56)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
	Suppressed: java.util.concurrent.TimeoutException: Closing the Vertx context timed out
		at io.vertx.junit5.VertxParameterProvider.lambda$parameterClosingConsumer$1(VertxParameterProvider.java:83)
		at io.vertx.junit5.ScopedObject.close(ScopedObject.java:45)
		at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
		at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$closeAllStoredCloseableValues$3(ExtensionValuesStore.java:68)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
		at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
		at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
		at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
		at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
		at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
		at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
		at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
		at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
		at org.junit.jupiter.engine.execution.ExtensionValuesStore.closeAllStoredCloseableValues(ExtensionValuesStore.java:68)
		at org.junit.jupiter.engine.descriptor.AbstractExtensionContext.close(AbstractExtensionContext.java:80)
		at org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.close(JupiterEngineExecutionContext.java:53)
		at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.cleanUp(JupiterTestDescriptor.java:222)
		at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$cleanUp$1(TestMethodTestDescriptor.java:155)
		at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
		at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.cleanUp(TestMethodTestDescriptor.java:155)
		at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.cleanUp(TestMethodTestDescriptor.java:68)
		at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$cleanUp$10(NodeTestTask.java:167)
		at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
		at org.junit.platform.engine.support.hierarchical.NodeTestTask.cleanUp(NodeTestTask.java:167)
		at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:98)
		... 39 more

Disconnected from the target VM, address: '127.0.0.1:63835', transport: 'socket'

Process finished with exit code -1

UPdated and added tests : rxjava3-issue.zip

hantsy avatar May 18 '25 11:05 hantsy

is that reproducible on non windows ?

vietj avatar May 22 '25 12:05 vietj

@vietj Also tried to use curl on Github actions workflow for the original project which runs on an Ubuntu.

- name: Test with CURL
  run: |
      mvn clean package exec:java -DskipTests --file rxjava3/pom.xml & 
      sleep 10
      echo ">>> print cURL result <<<"
      curl http://localhost:8888/hello & 

And got the following logging. It seems to be blocked.

>>> print cURL result <<<
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
2025-05-23 05:06:48,601 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: -Dio.netty.noJdkZlibDecoder: false
2025-05-23 05:06:48,601 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: -Dio.netty.noJdkZlibEncoder: false
2025-05-23 05:06:48,601 DEBUG [vert.x-eventloop-thread-1] i.n.h.c.c.ZlibCodecFactory: JZlib not in the classpath; the only window bits supported value will be 15
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0

hantsy avatar May 23 '25 05:05 hantsy

Hi @hantsy

It seems the issue is with the route definition.

If you change:

router.get("/hello").handler(rc -> rc.response().rxEnd("Hello from my route"));

To:

 // Must subscribe because computations are lazy with `rxEnd`
router.get("/hello").handler(rc -> rc.response().rxEnd("Hello from my route").subscribe());

Then the problem goes away.

I'm not sure how this is specific to 5.0, because the same behavior applies to 4.5.

Anyway, I'll close the issue but feel free to send more comments/questions

tsegismont avatar Dec 19 '25 15:12 tsegismont

I will verify it, thanks for debugging it.

Ideally, for reactive case, it should not call the subcribe explicitly.

When an Http Client connects to this endpoint, it will trigger a subcribe method implicitly.

hantsy avatar Dec 20 '25 02:12 hantsy

You can't have automatic subscription with the Route.handler method, but it should work with Route.respond

See https://vertx.io/docs/apidocs/io/vertx/reactivex/ext/web/Route.html#respond(io.reactivex.functions.Function)

Message ID: @.***>

tsegismont avatar Dec 20 '25 08:12 tsegismont

I am not sure how Vertx handle the http client connection. In Spring reactive stack, we can always return a Mono/Flux type directly, when a client connects to the endpoint, Spring framework will let the client subscribe to the server reactive data stream.

hantsy avatar Dec 22 '25 02:12 hantsy

// Must subscribe because computations are lazy with rxEnd router.get("/hello").handler(rc -> rc.response().rxEnd("Hello from my route").subscribe());

BTW, thank you for the solution.

hantsy avatar Dec 22 '25 02:12 hantsy