diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/vertx/impl/DefaultVertxInstance.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/vertx/impl/DefaultVertxInstance.java index fbd4bb8ba..91cf467c1 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/vertx/impl/DefaultVertxInstance.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/vertx/impl/DefaultVertxInstance.java @@ -7,6 +7,7 @@ import java.lang.invoke.MethodHandles; +import io.vertx.core.Context; import io.vertx.core.Vertx; import org.hibernate.reactive.logging.impl.Log; @@ -29,6 +30,7 @@ public final class DefaultVertxInstance implements VertxInstance, Stoppable, Sta private static final Log LOG = LoggerFactory.make( Log.class, MethodHandles.lookup() ); private Vertx vertx; + private boolean vertxCreator; @Override public Vertx getVertx() { @@ -40,14 +42,18 @@ public Vertx getVertx() { @Override public void stop() { - if ( vertx != null ) { + if ( vertxCreator && vertx != null ) { vertx.close().toCompletionStage().toCompletableFuture().join(); } } @Override public void start() { - vertx = Vertx.vertx(); + final Context context = Vertx.currentContext(); + vertxCreator = context == null || context.owner() == null; + vertx = vertxCreator + ? Vertx.vertx() // Create a new one + : context.owner(); // Get the existing one } }