From d79a709b3f75da6ff518e12364a9b63bfb511e54 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 16 Jul 2024 10:46:51 +0200 Subject: [PATCH] vertx-core does not need to depend on netty-transport-native-XXX instead it can depend on netty-transport-classes-XXX --- vertx-core/pom.xml | 6 ++--- .../main/java/io/vertx/core/VertxOptions.java | 1 - .../java/io/vertx/core/impl/VertxBuilder.java | 22 +++++++++++++------ .../java/io/vertx/core/impl/VertxImpl.java | 8 ++++--- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/vertx-core/pom.xml b/vertx-core/pom.xml index 0e596c176b9..8052c6d19c7 100644 --- a/vertx-core/pom.xml +++ b/vertx-core/pom.xml @@ -86,12 +86,12 @@ io.netty - netty-transport-native-epoll + netty-transport-classes-epoll true io.netty - netty-transport-native-kqueue + netty-transport-classes-kqueue true @@ -381,9 +381,7 @@ io/vertx/it/transport/TransportTest.java - io.netty:netty-transport-native-epoll io.netty:netty-transport-classes-epoll - io.netty:netty-transport-native-kqueue io.netty:netty-transport-classes-kqueue diff --git a/vertx-core/src/main/java/io/vertx/core/VertxOptions.java b/vertx-core/src/main/java/io/vertx/core/VertxOptions.java index 43c5af0c542..ec2dbb38453 100644 --- a/vertx-core/src/main/java/io/vertx/core/VertxOptions.java +++ b/vertx-core/src/main/java/io/vertx/core/VertxOptions.java @@ -16,7 +16,6 @@ import io.vertx.core.dns.AddressResolverOptions; import io.vertx.core.eventbus.EventBusOptions; import io.vertx.core.file.FileSystemOptions; -import io.vertx.core.impl.SysProps; import io.vertx.core.impl.cpu.CpuCoreSensor; import io.vertx.core.json.JsonObject; import io.vertx.core.metrics.MetricsOptions; diff --git a/vertx-core/src/main/java/io/vertx/core/impl/VertxBuilder.java b/vertx-core/src/main/java/io/vertx/core/impl/VertxBuilder.java index 76e6c9a8fc5..d657c74e1a7 100644 --- a/vertx-core/src/main/java/io/vertx/core/impl/VertxBuilder.java +++ b/vertx-core/src/main/java/io/vertx/core/impl/VertxBuilder.java @@ -49,6 +49,7 @@ public class VertxBuilder implements VertxBootstrap { private VertxOptions options; private JsonObject config; private Transport transport; + private Throwable transportUnavailabilityCause; private ClusterManager clusterManager; private NodeSelector clusterNodeSelector; private VertxTracerFactory tracerFactory; @@ -206,6 +207,7 @@ public Vertx vertx() { metrics, tracer, transport, + transportUnavailabilityCause, fileResolver, threadFactory, executorServiceFactory); @@ -228,6 +230,7 @@ public Future clusteredVertx() { metrics, tracer, transport, + transportUnavailabilityCause, fileResolver, threadFactory, executorServiceFactory); @@ -279,7 +282,17 @@ private void initTransport() { if (transport != null) { return; } - transport = findTransport(options.getPreferNativeTransport()); + Transport t = findTransport(options.getPreferNativeTransport()); + if (t != null) { + if (t.isAvailable()) { + transport = t; + } else { + transport = JDKTransport.INSTANCE; + transportUnavailabilityCause = t.unavailabilityCause(); + } + } else { + transport = JDKTransport.INSTANCE; + } } private void initFileResolver() { @@ -362,12 +375,7 @@ static Transport findTransport(boolean preferNative) { return transport; } } - Transport nativeTransport = nativeTransport(); - if (nativeTransport != null && nativeTransport.isAvailable()) { - return nativeTransport; - } else { - return JDKTransport.INSTANCE; - } + return nativeTransport(); } else { return JDKTransport.INSTANCE; } diff --git a/vertx-core/src/main/java/io/vertx/core/impl/VertxImpl.java b/vertx-core/src/main/java/io/vertx/core/impl/VertxImpl.java index bfbc4c0d410..d7e8362fe3f 100644 --- a/vertx-core/src/main/java/io/vertx/core/impl/VertxImpl.java +++ b/vertx-core/src/main/java/io/vertx/core/impl/VertxImpl.java @@ -163,14 +163,15 @@ private static ThreadFactory virtualThreadFactory() { private final TimeUnit maxEventLoopExecTimeUnit; private final CloseFuture closeFuture; private final Transport transport; + private final Throwable transportUnavailabilityCause; private final VertxTracer tracer; private final ThreadLocal> stickyContext = new ThreadLocal<>(); private final boolean disableTCCL; private final Boolean useDaemonThread; VertxImpl(VertxOptions options, ClusterManager clusterManager, NodeSelector nodeSelector, VertxMetrics metrics, - VertxTracer tracer, Transport transport, FileResolver fileResolver, VertxThreadFactory threadFactory, - ExecutorServiceFactory executorServiceFactory) { + VertxTracer tracer, Transport transport, Throwable transportUnavailabilityCause, + FileResolver fileResolver, VertxThreadFactory threadFactory, ExecutorServiceFactory executorServiceFactory) { // Sanity check if (Vertx.currentContext() != null) { log.warn("You're already on a Vert.x context, are you sure you want to create a new Vertx instance?"); @@ -218,6 +219,7 @@ private static ThreadFactory virtualThreadFactory() { this.threadFactory = threadFactory; this.metrics = metrics; this.transport = transport; + this.transportUnavailabilityCause = transportUnavailabilityCause; this.fileResolver = fileResolver; this.addressResolverOptions = options.getAddressResolverOptions(); this.hostnameResolver = new HostnameResolver(this, options.getAddressResolverOptions()); @@ -368,7 +370,7 @@ public Throwable unavailableNativeTransportCause() { if (isNativeTransportEnabled()) { return null; } - return transport.unavailabilityCause(); + return transportUnavailabilityCause; } public FileSystem fileSystem() {