Skip to content

Quarkus remote DEV mode fails on 999-SNAPSHOT over -dev dependencies #48198

@michalvavrik

Description

@michalvavrik

Describe the bug

I mentioned that Quarkus remote DEV is broken with 999-SNAPSHOT but works with 3.23.0. See #48142 and #47756 for 999-SNAPSHOT changes, I didn't check all Phillip PRs to indetify which makes the difference, I saw #45053 but that was in 3.23 so probably not causing it.

Expected behavior

Remote DEV mode works as it did with 3.23.0.

Actual behavior

Remote dev requests fail from the Quarkus DEV local process fails to connect to the remote process 2025-06-03 14:08:47,882 ERROR [io.qua.ver.htt.dep.dev.HttpRemoteDevClient] (Remote dev client thread) Remote dev request failed: java.net.SocketException: Connection reset. The remote process sports following failures:

2025-06-03 14:08:47,885 WARN  [io.net.boo.ServerBootstrap] (vert.x-acceptor-thread-0) Failed to register an accepted channel: [id: 0xff93c909, L:/127.0.0.1:1105 ! R:/127.0.0.1:43524]: java.lang.IllegalStateException
	at io.vertx.core.net.impl.VertxEventLoopGroup.next(VertxEventLoopGroup.java:37)
	at io.vertx.core.net.impl.VertxEventLoopGroup.register(VertxEventLoopGroup.java:53)
	at io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor.channelRead(ServerBootstrap.java:241)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
	at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:97)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:732)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:658)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:553)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
	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-06-03 14:08:47,885 ERROR [io.qua.ver.htt.run.dev.RemoteSyncHandler] (vert.x-worker-thread-1) Connect failed [Error Occurred After Shutdown]: java.lang.InterruptedException
	at java.base/java.lang.Object.wait0(Native Method)
	at java.base/java.lang.Object.wait(Object.java:366)
	at io.quarkus.vertx.http.runtime.devmode.RemoteSyncHandler$3$1.call(RemoteSyncHandler.java:144)
	at io.quarkus.vertx.http.runtime.devmode.RemoteSyncHandler$3$1.call(RemoteSyncHandler.java:130)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192)
	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
	at io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221)
	at io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56)
	at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:81)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
	at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1583)


2025-06-03 14:08:47,895 ERROR [io.qua.boo.cla.QuarkusClassLoader] (Classpath Change Timer) Failed to close io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-assistant-dev /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-assistant-dev-999-SNAPSHOT.jar runtime=false resources=null] [Error Occurred After Shutdown]: java.nio.file.NoSuchFileException: /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-assistant-dev-999-SNAPSHOT.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixPath.toRealPath(UnixPath.java:834)
	at io.quarkus.fs.util.base.DelegatingPath.toRealPath(DelegatingPath.java:171)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.lambda$removeFileSystem$0(ZipFileSystemProvider.java:324)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.removeFileSystem(ZipFileSystemProvider.java:326)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.close(ZipFileSystem.java:526)
	at io.quarkus.paths.ArchivePathTree$OpenArchivePathTree.close(ArchivePathTree.java:395)
	at io.quarkus.paths.SharedArchivePathTree$SharedOpenArchivePathTree.close(SharedArchivePathTree.java:120)
	at io.quarkus.paths.SharedArchivePathTree$CallerOpenPathTree.close(SharedArchivePathTree.java:221)
	at io.quarkus.bootstrap.classloading.PathTreeClassPathElement.close(PathTreeClassPathElement.java:204)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.closeClassPathElements(QuarkusClassLoader.java:791)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.close(QuarkusClassLoader.java:774)
	at io.quarkus.bootstrap.app.CuratedApplication.close(CuratedApplication.java:457)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.close(IsolatedDevModeMain.java:359)
	at io.quarkus.bootstrap.runner.DevModeMediator$AppProcessCleanup.close(DevModeMediator.java:74)
	at io.quarkus.bootstrap.runner.DevModeMediator$ChangeDetector.run(DevModeMediator.java:111)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
	at java.base/java.util.TimerThread.run(Timer.java:516)


2025-06-03 14:08:47,896 ERROR [io.qua.boo.cla.QuarkusClassLoader] (Classpath Change Timer) Failed to close io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-vertx-http-dev /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-vertx-http-dev-999-SNAPSHOT.jar runtime=false resources=null] [Error Occurred After Shutdown]: java.nio.file.NoSuchFileException: /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-vertx-http-dev-999-SNAPSHOT.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixPath.toRealPath(UnixPath.java:834)
	at io.quarkus.fs.util.base.DelegatingPath.toRealPath(DelegatingPath.java:171)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.lambda$removeFileSystem$0(ZipFileSystemProvider.java:324)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.removeFileSystem(ZipFileSystemProvider.java:326)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.close(ZipFileSystem.java:526)
	at io.quarkus.paths.ArchivePathTree$OpenArchivePathTree.close(ArchivePathTree.java:395)
	at io.quarkus.paths.SharedArchivePathTree$SharedOpenArchivePathTree.close(SharedArchivePathTree.java:120)
	at io.quarkus.paths.SharedArchivePathTree$CallerOpenPathTree.close(SharedArchivePathTree.java:221)
	at io.quarkus.bootstrap.classloading.PathTreeClassPathElement.close(PathTreeClassPathElement.java:204)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.closeClassPathElements(QuarkusClassLoader.java:791)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.close(QuarkusClassLoader.java:774)
	at io.quarkus.bootstrap.app.CuratedApplication.close(CuratedApplication.java:457)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.close(IsolatedDevModeMain.java:359)
	at io.quarkus.bootstrap.runner.DevModeMediator$AppProcessCleanup.close(DevModeMediator.java:74)
	at io.quarkus.bootstrap.runner.DevModeMediator$ChangeDetector.run(DevModeMediator.java:111)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
	at java.base/java.util.TimerThread.run(Timer.java:516)


2025-06-03 14:08:47,896 ERROR [io.qua.boo.cla.QuarkusClassLoader] (Classpath Change Timer) Failed to close io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-rest-dev /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-rest-dev-999-SNAPSHOT.jar runtime=false resources=null] [Error Occurred After Shutdown]: java.nio.file.NoSuchFileException: /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-rest-dev-999-SNAPSHOT.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixPath.toRealPath(UnixPath.java:834)
	at io.quarkus.fs.util.base.DelegatingPath.toRealPath(DelegatingPath.java:171)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.lambda$removeFileSystem$0(ZipFileSystemProvider.java:324)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.removeFileSystem(ZipFileSystemProvider.java:326)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.close(ZipFileSystem.java:526)
	at io.quarkus.paths.ArchivePathTree$OpenArchivePathTree.close(ArchivePathTree.java:395)
	at io.quarkus.paths.SharedArchivePathTree$SharedOpenArchivePathTree.close(SharedArchivePathTree.java:120)
	at io.quarkus.paths.SharedArchivePathTree$CallerOpenPathTree.close(SharedArchivePathTree.java:221)
	at io.quarkus.bootstrap.classloading.PathTreeClassPathElement.close(PathTreeClassPathElement.java:204)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.closeClassPathElements(QuarkusClassLoader.java:791)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.close(QuarkusClassLoader.java:774)
	at io.quarkus.bootstrap.app.CuratedApplication.close(CuratedApplication.java:457)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.close(IsolatedDevModeMain.java:359)
	at io.quarkus.bootstrap.runner.DevModeMediator$AppProcessCleanup.close(DevModeMediator.java:74)
	at io.quarkus.bootstrap.runner.DevModeMediator$ChangeDetector.run(DevModeMediator.java:111)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
	at java.base/java.util.TimerThread.run(Timer.java:516)


2025-06-03 14:08:47,897 ERROR [io.qua.boo.cla.QuarkusClassLoader] (Classpath Change Timer) Failed to close io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-arc-dev /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-arc-dev-999-SNAPSHOT.jar runtime=false resources=null] [Error Occurred After Shutdown]: java.nio.file.NoSuchFileException: /tmp/repro/target/quarkus-app/lib/deployment/io.quarkus.quarkus-arc-dev-999-SNAPSHOT.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixPath.toRealPath(UnixPath.java:834)
	at io.quarkus.fs.util.base.DelegatingPath.toRealPath(DelegatingPath.java:171)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.lambda$removeFileSystem$0(ZipFileSystemProvider.java:324)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.removeFileSystem(ZipFileSystemProvider.java:326)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.close(ZipFileSystem.java:526)
	at io.quarkus.paths.ArchivePathTree$OpenArchivePathTree.close(ArchivePathTree.java:395)
	at io.quarkus.paths.SharedArchivePathTree$SharedOpenArchivePathTree.close(SharedArchivePathTree.java:120)
	at io.quarkus.paths.SharedArchivePathTree$CallerOpenPathTree.close(SharedArchivePathTree.java:221)
	at io.quarkus.bootstrap.classloading.PathTreeClassPathElement.close(PathTreeClassPathElement.java:204)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.closeClassPathElements(QuarkusClassLoader.java:791)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.close(QuarkusClassLoader.java:774)
	at io.quarkus.bootstrap.app.CuratedApplication.close(CuratedApplication.java:457)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.close(IsolatedDevModeMain.java:359)
	at io.quarkus.bootstrap.runner.DevModeMediator$AppProcessCleanup.close(DevModeMediator.java:74)
	at io.quarkus.bootstrap.runner.DevModeMediator$ChangeDetector.run(DevModeMediator.java:111)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
	at java.base/java.util.TimerThread.run(Timer.java:516)

How to Reproduce?

Reproducer:

quarkus create app repro -x=quarkus-rest
cd repro
export QUARKUS_LAUNCH_DEVMODE=true
mvn clean install -DskipITs -DskipTests -Dquarkus.package.jar.type=mutable-jar -Dquarkus.platform.version=999-SNAPSHOT -Dquarkus.platform.group-id=io.quarkus
java -Dquarkus.live-reload.password=qe -Dquarkus.http.port=1105 -jar target/quarkus-app/quarkus-run.jar
mvn -Dquarkus.package.jar.type=mutable-jar -Dquarkus.live-reload.password=qe -Dquarkus.live-reload.url=http://localhost:1105 quarkus:remote-dev -Dquarkus.platform.version=999-SNAPSHOT -Dquarkus.platform.group-id=io.quarkus

Output of uname -a or ver

Fedora 39, Ubuntu latest

Output of java -version

JDK 21

Quarkus version or git rev

999-snapshot

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

Apache Maven 3.9.9

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions