This is an automated email from the ASF dual-hosted git repository. vkulichenko pushed a commit to branch ignite-3.0.0-alpha2 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 1f6acbbf1612c32c702b32bbe0a0e03dba6168ef Author: Valentin Kulichenko <valentin.kuliche...@gmail.com> AuthorDate: Thu Jun 24 14:15:00 2021 -0700 IGNITE-14993 - Choose available port out of a range --- .../ignite/network/internal/netty/ConnectionManager.java | 2 ++ .../apache/ignite/network/internal/netty/NettyServer.java | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/network/src/main/java/org/apache/ignite/network/internal/netty/ConnectionManager.java b/modules/network/src/main/java/org/apache/ignite/network/internal/netty/ConnectionManager.java index 3b3f94c..b2f4a10 100644 --- a/modules/network/src/main/java/org/apache/ignite/network/internal/netty/ConnectionManager.java +++ b/modules/network/src/main/java/org/apache/ignite/network/internal/netty/ConnectionManager.java @@ -94,6 +94,8 @@ public class ConnectionManager { public void start() throws IgniteInternalException { try { server.start().join(); + + LOG.info("Connection created [address=" + server.address() + ']'); } catch (CompletionException e) { Throwable cause = e.getCause(); diff --git a/modules/network/src/main/java/org/apache/ignite/network/internal/netty/NettyServer.java b/modules/network/src/main/java/org/apache/ignite/network/internal/netty/NettyServer.java index feb99ed..2a458a5 100644 --- a/modules/network/src/main/java/org/apache/ignite/network/internal/netty/NettyServer.java +++ b/modules/network/src/main/java/org/apache/ignite/network/internal/netty/NettyServer.java @@ -25,6 +25,7 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.ServerChannel; @@ -171,7 +172,18 @@ public class NettyServer { */ .childOption(ChannelOption.SO_KEEPALIVE, true); - serverStartFuture = NettyUtils.toChannelCompletableFuture(bootstrap.bind(port)) + CompletableFuture<Channel> bindFuture = NettyUtils.toChannelCompletableFuture(bootstrap.bind(port)); + + for (int i = 1; i < PORT_RANGE; i++) { + int port0 = port + i; + + bindFuture = bindFuture + .thenApply(CompletableFuture::completedFuture) + .exceptionally(err -> NettyUtils.toChannelCompletableFuture(bootstrap.bind(port0))) + .thenCompose(Function.identity()); + } + + serverStartFuture = bindFuture .handle((channel, err) -> { synchronized (startStopLock) { CompletableFuture<Void> workerCloseFuture = serverCloseFuture;