This is an automated email from the ASF dual-hosted git repository.

sergeychugunov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 8dc319f2cf IGNITE-20831 Make all nodes SWIM seeds in 
Cluster.startAndInit()
8dc319f2cf is described below

commit 8dc319f2cf3d983ae632b258d068a99726917e5b
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Tue Nov 14 11:54:10 2023 +0400

    IGNITE-20831 Make all nodes SWIM seeds in Cluster.startAndInit()
    
    Signed-off-by: Sergey Chugunov <[email protected]>
---
 .../java/org/apache/ignite/internal/Cluster.java     | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git 
a/modules/runner/src/testFixtures/java/org/apache/ignite/internal/Cluster.java 
b/modules/runner/src/testFixtures/java/org/apache/ignite/internal/Cluster.java
index 58a03e8987..f69509742c 100644
--- 
a/modules/runner/src/testFixtures/java/org/apache/ignite/internal/Cluster.java
+++ 
b/modules/runner/src/testFixtures/java/org/apache/ignite/internal/Cluster.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal;
 
+import static java.util.stream.Collectors.joining;
 import static java.util.stream.Collectors.toList;
 import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeName;
 import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
@@ -87,8 +88,6 @@ public class Cluster {
 
     private static final int BASE_HTTPS_PORT = 10400;
 
-    private static final String CONNECT_NODE_ADDR = "\"localhost:" + BASE_PORT 
+ '\"';
-
     /** Timeout for SQL queries (in milliseconds). */
     private static final int QUERY_TIMEOUT_MS = 10_000;
 
@@ -120,6 +119,9 @@ public class Cluster {
 
     private volatile boolean stopped = false;
 
+    /** Number of nodes in the cluster on first startAndInit() [if it was 
invoked]. */
+    private volatile int initialClusterSize;
+
     /** Indices of nodes that have been knocked out. */
     private final Set<Integer> knockedOutNodesIndices = new 
ConcurrentHashSet<>();
 
@@ -209,6 +211,8 @@ public class Cluster {
             throw new IllegalStateException("The cluster is already started");
         }
 
+        initialClusterSize = nodeCount;
+
         List<CompletableFuture<IgniteImpl>> futures = IntStream.range(0, 
nodeCount)
                 .mapToObj(nodeIndex -> startNodeAsync(nodeIndex, 
nodeBootstrapConfigTemplate))
                 .collect(toList());
@@ -254,7 +258,7 @@ public class Cluster {
         String config = IgniteStringFormatter.format(
                 nodeBootstrapConfigTemplate,
                 BASE_PORT + nodeIndex,
-                CONNECT_NODE_ADDR,
+                seedAddressesString(),
                 BASE_CLIENT_PORT + nodeIndex,
                 BASE_HTTP_PORT + nodeIndex,
                 BASE_HTTPS_PORT + nodeIndex
@@ -285,6 +289,16 @@ public class Cluster {
                 });
     }
 
+    private String seedAddressesString() {
+        // We do this maxing because in some scenarios startAndInit() is not 
invoked, instead startNode() is used directly.
+        int seedsCount = Math.max(Math.max(initialClusterSize, nodes.size()), 
1);
+
+        return IntStream.range(0, seedsCount)
+                .map(index -> BASE_PORT + index)
+                .mapToObj(port -> "\"localhost:" + port + '\"')
+                .collect(joining(", "));
+    }
+
     /**
      * Returns an Ignite node (a member of the cluster) by its index.
      */

Reply via email to