From 8a68a3c6c5e2381d6572946ee2b507b0cc582728 Mon Sep 17 00:00:00 2001 From: codingxu97 Date: Sat, 16 Oct 2021 03:02:48 +0800 Subject: [PATCH 1/2] fix hibernate#1001 --- .../reactive/vertx/impl/DefaultVertxInstance.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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..cfe7fa20b 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,21 @@ 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(); + Context currentContext = Vertx.currentContext(); + // if null, create Vertx instance + if ( currentContext != null && currentContext.owner() != null ) { + vertx = currentContext.owner(); + } else { + vertx = Vertx.vertx(); + vertxCreator = true; + } } } From fcf0c9d8f4cbccb2c66d97c47aac516691cb2fd0 Mon Sep 17 00:00:00 2001 From: codingxu97 Date: Sat, 16 Oct 2021 11:04:14 +0800 Subject: [PATCH 2/2] Code refactoring of start() --- .../reactive/vertx/impl/DefaultVertxInstance.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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 cfe7fa20b..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 @@ -49,14 +49,11 @@ public void stop() { @Override public void start() { - Context currentContext = Vertx.currentContext(); - // if null, create Vertx instance - if ( currentContext != null && currentContext.owner() != null ) { - vertx = currentContext.owner(); - } else { - vertx = Vertx.vertx(); - vertxCreator = true; - } + 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 } }