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

sanpwc 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 5cfbc6537c IGNITE-23453 Enforce proper raft and rocks stop order in 
ItNodeTest. (#4571)
5cfbc6537c is described below

commit 5cfbc6537cc6ceb359c97c25d06b9df24d98d623
Author: Alexander Lapin <[email protected]>
AuthorDate: Wed Oct 16 11:03:13 2024 +0300

    IGNITE-23453 Enforce proper raft and rocks stop order in ItNodeTest. (#4571)
---
 .../apache/ignite/raft/jraft/core/ItNodeTest.java  | 106 ++++++++++-----------
 1 file changed, 52 insertions(+), 54 deletions(-)

diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
index cadd2ff7d3..892e79603d 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
@@ -138,6 +138,7 @@ import 
org.apache.ignite.raft.jraft.util.ExecutorServiceHelper;
 import org.apache.ignite.raft.jraft.util.ExponentialBackoffTimeoutStrategy;
 import org.apache.ignite.raft.jraft.util.Utils;
 import org.apache.ignite.raft.jraft.util.concurrent.FixedThreadsExecutorGroup;
+import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
@@ -195,6 +196,7 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
 
     private final List<FixedThreadsExecutorGroup> appendEntriesExecutors = new 
ArrayList<>();
 
+    private @Nullable DefaultLogStorageFactory persistentLogStorageFactory;
     /** Test info. */
     private TestInfo testInfo;
 
@@ -247,6 +249,10 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
 
         TestUtils.assertAllJraftThreadsStopped();
 
+        if (persistentLogStorageFactory != null) {
+            assertThat(persistentLogStorageFactory.stopAsync(), 
willCompleteSuccessfully());
+        }
+
         log.info(">>>>>>>>>>>>>>> End test method: " + 
testInfo.getDisplayName() + ", cost:"
             + (Utils.monotonicMs() - testStartMs) + " ms.");
     }
@@ -3902,39 +3908,35 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
                 testInfo
         );
 
-        DefaultLogStorageFactory persistentLogStorageFactory = 
startPersistentLogStorageFactory();
+        persistentLogStorageFactory = startPersistentLogStorageFactory();
 
-        try {
-            cluster.setRaftServiceFactory(new 
IgniteJraftServiceFactory(persistentLogStorageFactory));
+        cluster.setRaftServiceFactory(new 
IgniteJraftServiceFactory(persistentLogStorageFactory));
 
-            for (TestPeer peer : peers) {
-                assertTrue(cluster.start(peer));
-            }
+        for (TestPeer peer : peers) {
+            assertTrue(cluster.start(peer));
+        }
 
-            waitTillFirstConfigLogEntryIsReplicated(forcedLeaderPeer);
+        waitTillFirstConfigLogEntryIsReplicated(forcedLeaderPeer);
 
-            // This makes majority go.
-            cluster.stop(originalLeaderPeer.getPeerId());
+        // This makes majority go.
+        cluster.stop(originalLeaderPeer.getPeerId());
 
-            cluster.getNode(forcedLeaderPeer.getPeerId()).resetPeers(new 
Configuration(Set.of(forcedLeaderPeer.getPeerId())));
-            assertThat(cluster.waitAndGetLeader().getLeaderId(), 
is(forcedLeaderPeer.getPeerId()));
+        cluster.getNode(forcedLeaderPeer.getPeerId()).resetPeers(new 
Configuration(Set.of(forcedLeaderPeer.getPeerId())));
+        assertThat(cluster.waitAndGetLeader().getLeaderId(), 
is(forcedLeaderPeer.getPeerId()));
 
-            assertThat(lastLogIndexAt(forcedLeaderPeer), 
is(configFromResetIndex));
+        assertThat(lastLogIndexAt(forcedLeaderPeer), is(configFromResetIndex));
 
-            Consumer<NodeOptions> installExternalIndex = nodeOptions -> 
nodeOptions.setExternallyEnforcedConfigIndex(configFromResetIndex);
-            cluster.setNodeOptionsCustomizer(installExternalIndex);
+        Consumer<NodeOptions> installExternalIndex = nodeOptions -> 
nodeOptions.setExternallyEnforcedConfigIndex(configFromResetIndex);
+        cluster.setNodeOptionsCustomizer(installExternalIndex);
 
-            assertTrue(cluster.start(originalLeaderPeer));
+        assertTrue(cluster.start(originalLeaderPeer));
 
-            assertFalse(
-                    waitForCondition(() -> 
cluster.getNode(originalLeaderPeer.getPeerId()).isLeader(), 
TimeUnit.SECONDS.toMillis(5)),
-                    "Ex-leader has become a leader again"
-            );
+        assertFalse(
+                waitForCondition(() -> 
cluster.getNode(originalLeaderPeer.getPeerId()).isLeader(), 
TimeUnit.SECONDS.toMillis(5)),
+                "Ex-leader has become a leader again"
+        );
 
-            
assertTrue(cluster.getNode(forcedLeaderPeer.getPeerId()).isLeader(), "Forced 
leader must remain a leader");
-        } finally {
-            persistentLogStorageFactory.stopAsync();
-        }
+        assertTrue(cluster.getNode(forcedLeaderPeer.getPeerId()).isLeader(), 
"Forced leader must remain a leader");
     }
 
     private DefaultLogStorageFactory startPersistentLogStorageFactory() {
@@ -3971,47 +3973,43 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
                 testInfo
         );
 
-        DefaultLogStorageFactory persistentLogStorageFactory = 
startPersistentLogStorageFactory();
+        persistentLogStorageFactory = startPersistentLogStorageFactory();
 
-        try {
-            cluster.setRaftServiceFactory(new 
IgniteJraftServiceFactory(persistentLogStorageFactory));
+        cluster.setRaftServiceFactory(new 
IgniteJraftServiceFactory(persistentLogStorageFactory));
 
-            for (TestPeer peer : peers) {
-                assertTrue(cluster.start(peer));
-            }
+        for (TestPeer peer : peers) {
+            assertTrue(cluster.start(peer));
+        }
 
-            waitTillFirstConfigLogEntryIsReplicated(forcedLeaderPeer);
+        waitTillFirstConfigLogEntryIsReplicated(forcedLeaderPeer);
 
-            // This makes majority go.
-            cluster.stop(originalLeaderPeer.getPeerId());
+        // This makes majority go.
+        cluster.stop(originalLeaderPeer.getPeerId());
 
-            Node forcedLeaderNode = 
cluster.getNode(forcedLeaderPeer.getPeerId());
-            forcedLeaderNode.resetPeers(new 
Configuration(Set.of(forcedLeaderPeer.getPeerId())));
-            Node node = cluster.waitAndGetLeader();
-            assertThat(node.getLeaderId(), is(forcedLeaderPeer.getPeerId()));
+        Node forcedLeaderNode = cluster.getNode(forcedLeaderPeer.getPeerId());
+        forcedLeaderNode.resetPeers(new 
Configuration(Set.of(forcedLeaderPeer.getPeerId())));
+        Node node = cluster.waitAndGetLeader();
+        assertThat(node.getLeaderId(), is(forcedLeaderPeer.getPeerId()));
 
-            Consumer<NodeOptions> installExternalIndex = nodeOptions -> 
nodeOptions.setExternallyEnforcedConfigIndex(configFromResetIndex);
-            cluster.setNodeOptionsCustomizer(installExternalIndex);
+        Consumer<NodeOptions> installExternalIndex = nodeOptions -> 
nodeOptions.setExternallyEnforcedConfigIndex(configFromResetIndex);
+        cluster.setNodeOptionsCustomizer(installExternalIndex);
 
-            assertTrue(cluster.start(originalLeaderPeer));
+        assertTrue(cluster.start(originalLeaderPeer));
 
-            CompletableFuture<Void> configChanged = new CompletableFuture<>();
-            forcedLeaderNode.changePeersAndLearners(
-                    new Configuration(Set.of(forcedLeaderPeer.getPeerId(), 
originalLeaderPeer.getPeerId())),
-                    node.getCurrentTerm(),
-                    completeFutureClosure(configChanged)
-            );
-            assertThat(configChanged, willCompleteSuccessfully());
+        CompletableFuture<Void> configChanged = new CompletableFuture<>();
+        forcedLeaderNode.changePeersAndLearners(
+                new Configuration(Set.of(forcedLeaderPeer.getPeerId(), 
originalLeaderPeer.getPeerId())),
+                node.getCurrentTerm(),
+                completeFutureClosure(configChanged)
+        );
+        assertThat(configChanged, willCompleteSuccessfully());
 
-            
forcedLeaderNode.transferLeadershipTo(originalLeaderPeer.getPeerId());
+        forcedLeaderNode.transferLeadershipTo(originalLeaderPeer.getPeerId());
 
-            assertTrue(
-                    waitForCondition(() -> 
cluster.getNode(originalLeaderPeer.getPeerId()).isLeader(), 
TimeUnit.SECONDS.toMillis(10)),
-                    "Original leader was not able to become a leader after 
reset"
-            );
-        } finally {
-            persistentLogStorageFactory.stopAsync();
-        }
+        assertTrue(
+                waitForCondition(() -> 
cluster.getNode(originalLeaderPeer.getPeerId()).isLeader(), 
TimeUnit.SECONDS.toMillis(10)),
+                "Original leader was not able to become a leader after reset"
+        );
     }
 
     private NodeOptions createNodeOptions(int nodeIdx) {

Reply via email to