You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sd...@apache.org on 2023/01/27 12:04:12 UTC

[ignite-3] branch main updated: IGNITE-18611 Change Scalecube-related timeouts to Scalecube defaults (#1577)

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

sdanilov 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 00517e7b15 IGNITE-18611 Change Scalecube-related timeouts to Scalecube defaults (#1577)
00517e7b15 is described below

commit 00517e7b151f6c093a71978345b4d0ace9ff2ffa
Author: Roman Puchkovskiy <ro...@gmail.com>
AuthorDate: Fri Jan 27 16:04:05 2023 +0400

    IGNITE-18611 Change Scalecube-related timeouts to Scalecube defaults (#1577)
---
 .../ignite/internal/cli/IntegrationTestBase.java   | 35 ++++++++++++++++++----
 .../repl/executor/ItIgnitePicocliCommandsTest.java |  5 ++++
 .../ClusterMembershipConfigurationSchema.java      |  4 +--
 .../ScaleCubeConfigurationSchema.java              |  6 ++--
 .../internal/AbstractClusterIntegrationTest.java   | 29 ++++++++++++++----
 .../internal/compute/ItLogicalTopologyTest.java    |  5 ++++
 .../runner/app/ItIgniteNodeRestartTest.java        |  9 ++++++
 7 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
index f14617ae0e..b809518b6a 100644
--- a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
+++ b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
@@ -92,11 +92,30 @@ public class IntegrationTestBase extends BaseIgniteAbstractTest {
 
     /** Nodes bootstrap configuration pattern. */
     private static final String NODE_BOOTSTRAP_CFG = "{\n"
-            + "  \"network\": {\n"
-            + "    \"port\":{},\n"
-            + "    \"portRange\": 5,\n"
-            + "    \"nodeFinder\":{\n"
-            + "      \"netClusterNodes\": [ {} ]\n"
+            + "  network: {\n"
+            + "    port:{},\n"
+            + "    portRange: 5,\n"
+            + "    nodeFinder:{\n"
+            + "      netClusterNodes: [ {} ]\n"
+            + "    }\n"
+            + "  }\n"
+            + "}";
+
+    /** Template for node bootstrap config with Scalecube settings for fast failure detection. */
+    protected static final String FAST_SWIM_NODE_BOOTSTRAP_CFG_TEMPLATE = "{\n"
+            + "  network: {\n"
+            + "    port: {},\n"
+            + "    nodeFinder: {\n"
+            + "      netClusterNodes: [ {} ]\n"
+            + "    },\n"
+            + "    membership: {\n"
+            + "      membershipSyncInterval: 1000,\n"
+            + "      failurePingInterval: 500,\n"
+            + "      scaleCube: {\n"
+            + "        membershipSuspicionMultiplier: 1,\n"
+            + "        failurePingRequestMembers: 1,\n"
+            + "        gossipInterval: 10\n"
+            + "      },\n"
             + "    }\n"
             + "  }\n"
             + "}";
@@ -201,7 +220,7 @@ public class IntegrationTestBase extends BaseIgniteAbstractTest {
                     String nodeName = testNodeName(testInfo, i);
                     CLUSTER_NODE_NAMES.add(nodeName);
 
-                    String config = IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG, BASE_PORT + i, connectNodeAddr);
+                    String config = IgniteStringFormatter.format(nodeBootstrapConfigTemplate(), BASE_PORT + i, connectNodeAddr);
 
                     NODE_CONFIGS.put(nodeName, config);
 
@@ -210,6 +229,10 @@ public class IntegrationTestBase extends BaseIgniteAbstractTest {
                 .collect(toList());
     }
 
+    protected String nodeBootstrapConfigTemplate() {
+        return NODE_BOOTSTRAP_CFG;
+    }
+
     protected void initializeCluster(String metaStorageNodeName) {
         IgnitionManager.init(metaStorageNodeName, List.of(metaStorageNodeName), "cluster");
 
diff --git a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
index e0b2997210..c83347b204 100644
--- a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
+++ b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
@@ -87,6 +87,11 @@ public class ItIgnitePicocliCommandsTest extends CliCommandTestInitializedIntegr
         return TopLevelCliReplCommand.class;
     }
 
+    @Override
+    protected String nodeBootstrapConfigTemplate() {
+        return FAST_SWIM_NODE_BOOTSTRAP_CFG_TEMPLATE;
+    }
+
     @BeforeEach
     @Override
     public void setUp(TestInfo testInfo) throws Exception {
diff --git a/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ClusterMembershipConfigurationSchema.java b/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ClusterMembershipConfigurationSchema.java
index bfb18e047a..d3add782d8 100644
--- a/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ClusterMembershipConfigurationSchema.java
+++ b/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ClusterMembershipConfigurationSchema.java
@@ -28,11 +28,11 @@ import org.apache.ignite.configuration.annotation.Value;
 public class ClusterMembershipConfigurationSchema {
     /** Periodic membership data sync interval. */
     @Value(hasDefault = true)
-    public final int membershipSyncInterval = 1000;
+    public final int membershipSyncInterval = 30_000;
 
     /** Failure detector ping interval. */
     @Value(hasDefault = true)
-    public final int failurePingInterval = 500;
+    public final int failurePingInterval = 1_000;
 
     /** ScaleCube-specific configuration. */
     @ConfigValue
diff --git a/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ScaleCubeConfigurationSchema.java b/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ScaleCubeConfigurationSchema.java
index 9412a98350..2d10aafbe1 100644
--- a/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ScaleCubeConfigurationSchema.java
+++ b/modules/network/src/main/java/org/apache/ignite/internal/network/configuration/ScaleCubeConfigurationSchema.java
@@ -30,13 +30,13 @@ public class ScaleCubeConfigurationSchema {
      * io.scalecube.cluster.ClusterMath#suspicionTimeout.
      */
     @Value(hasDefault = true)
-    public final int membershipSuspicionMultiplier = 1;
+    public final int membershipSuspicionMultiplier = 5;
 
     /**
      * Number of members to be randomly selected by a cluster node for an indirect ping request.
      */
     @Value(hasDefault = true)
-    public final int failurePingRequestMembers = 1;
+    public final int failurePingRequestMembers = 3;
 
     /**
      * Gossip spreading interval.
@@ -44,5 +44,5 @@ public class ScaleCubeConfigurationSchema {
      * @see <a href="https://en.wikipedia.org/wiki/Gossip_protocol">Gossip Protocol</a>
      */
     @Value(hasDefault = true)
-    public final int gossipInterval = 10;
+    public final int gossipInterval = 200;
 }
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
index 338972f435..0f18443650 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
@@ -47,10 +47,29 @@ public abstract class AbstractClusterIntegrationTest extends BaseIgniteAbstractT
 
     /** Nodes bootstrap configuration pattern. */
     private static final String NODE_BOOTSTRAP_CFG_TEMPLATE = "{\n"
-            + "  \"network\": {\n"
-            + "    \"port\":{},\n"
-            + "    \"nodeFinder\":{\n"
-            + "      \"netClusterNodes\": [ {} ]\n"
+            + "  network: {\n"
+            + "    port: {},\n"
+            + "    nodeFinder: {\n"
+            + "      netClusterNodes: [ {} ]\n"
+            + "    }\n"
+            + "  }\n"
+            + "}";
+
+    /** Template for node bootstrap config with Scalecube settings for fast failure detection. */
+    protected static final String FAST_SWIM_NODE_BOOTSTRAP_CFG_TEMPLATE = "{\n"
+            + "  network: {\n"
+            + "    port: {},\n"
+            + "    nodeFinder: {\n"
+            + "      netClusterNodes: [ {} ]\n"
+            + "    },\n"
+            + "    membership: {\n"
+            + "      membershipSyncInterval: 1000,\n"
+            + "      failurePingInterval: 500,\n"
+            + "      scaleCube: {\n"
+            + "        membershipSuspicionMultiplier: 1,\n"
+            + "        failurePingRequestMembers: 1,\n"
+            + "        gossipInterval: 10\n"
+            + "      },\n"
             + "    }\n"
             + "  }\n"
             + "}";
@@ -85,7 +104,7 @@ public abstract class AbstractClusterIntegrationTest extends BaseIgniteAbstractT
 
     @BeforeEach
     void startAndInitCluster(TestInfo testInfo) {
-        cluster = new Cluster(testInfo, workDir, NODE_BOOTSTRAP_CFG_TEMPLATE);
+        cluster = new Cluster(testInfo, workDir, getNodeBootstrapConfigTemplate());
 
         cluster.startAndInit(initialNodes());
     }
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
index 0964baa022..dc25c73540 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
@@ -62,6 +62,11 @@ class ItLogicalTopologyTest extends AbstractClusterIntegrationTest {
         return 1;
     }
 
+    @Override
+    protected String getNodeBootstrapConfigTemplate() {
+        return FAST_SWIM_NODE_BOOTSTRAP_CFG_TEMPLATE;
+    }
+
     @Test
     void receivesLogicalTopologyEvents() throws Exception {
         IgniteImpl entryNode = node(0);
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index 1831f1a14f..0083fe05c5 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -142,6 +142,15 @@ public class ItIgniteNodeRestartTest extends IgniteAbstractTest {
     private static final String NODE_BOOTSTRAP_CFG = "{\n"
             + "  network.port: {},\n"
             + "  network.nodeFinder.netClusterNodes: {}\n"
+            + "  network.membership: {\n"
+            + "    membershipSyncInterval: 1000,\n"
+            + "    failurePingInterval: 500,\n"
+            + "    scaleCube: {\n"
+            + "      membershipSuspicionMultiplier: 1,\n"
+            + "      failurePingRequestMembers: 1,\n"
+            + "      gossipInterval: 10\n"
+            + "    },\n"
+            + "  }\n"
             + "}";
 
     @InjectConfiguration