diff --git a/core/deployment/src/main/java/io/quarkus/deployment/dev/DevModeMain.java b/core/deployment/src/main/java/io/quarkus/deployment/dev/DevModeMain.java index a5deda3c6e77b0..17b1f78943c22d 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/dev/DevModeMain.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/dev/DevModeMain.java @@ -102,12 +102,14 @@ public void start() throws Exception { QuarkusBootstrap.Builder bootstrapBuilder = QuarkusBootstrap.builder() .setApplicationRoot(appRoots.build()) - .setTargetDirectory(context.getDevModeRunnerJarFile().getParentFile().toPath()) .setIsolateDeployment(true) .setLocalProjectDiscovery(context.isLocalProjectDiscovery()) .addAdditionalDeploymentArchive(path) .setBaseName(context.getBaseName()) .setMode(context.getMode()); + if (context.getDevModeRunnerJarFile() != null) { + bootstrapBuilder.setTargetDirectory(context.getDevModeRunnerJarFile().getParentFile().toPath()); + } if (context.getProjectDir() != null) { bootstrapBuilder.setProjectRoot(context.getProjectDir().toPath()); } else { diff --git a/extensions/vertx-core/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java b/extensions/vertx-core/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java index 7fe74cb32bb453..5d76b7b70c8172 100644 --- a/extensions/vertx-core/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java +++ b/extensions/vertx-core/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java @@ -53,8 +53,8 @@ public class VertxCoreRecorder { public Supplier configureVertx(VertxConfiguration config, LaunchMode launchMode, ShutdownContext shutdown, List> customizers) { - vertx = new VertxSupplier(config, customizers); if (launchMode != LaunchMode.DEVELOPMENT) { + vertx = new VertxSupplier(config, customizers); // we need this to be part of the last shutdown tasks because closing it early (basically before Arc) // could cause problem to beans that rely on Vert.x and contain shutdown tasks shutdown.addLastShutdownTask(new Runnable() { @@ -63,6 +63,31 @@ public void run() { destroy(); } }); + } else { + if (vertx == null) { + vertx = new VertxSupplier(config, customizers); + } else if (vertx.v != null) { + tryCleanTccl(vertx.v); + } + shutdown.addLastShutdownTask(new Runnable() { + @Override + public void run() { + CountDownLatch latch = new CountDownLatch(1); + if (vertx.v != null) { + vertx.v.eventBus().close(new Handler>() { + @Override + public void handle(AsyncResult event) { + vertx.v.eventBus().start(new Handler>() { + @Override + public void handle(AsyncResult event) { + latch.countDown(); + } + }); + } + }); + } + } + }); } return vertx; } @@ -303,7 +328,8 @@ public Supplier bossSupplier() { return new Supplier() { @Override public EventLoopGroup get() { - return ((VertxImpl) vertx.get()).getAcceptorEventLoopGroup(); + vertx.get(); + return ((VertxImpl) vertx.v).getAcceptorEventLoopGroup(); } }; }