3838import org .apache .ignite .internal .replicator .TestReplicationGroupId ;
3939import org .apache .ignite .raft .server .counter .CounterListener ;
4040import org .junit .jupiter .api .Test ;
41- import org .junit .jupiter .api .Timeout ;
4241
4342/**
4443 * Integration test for verifying that a new leader's clock doesn't step down after leadership transfer.
@@ -78,7 +77,7 @@ private void startClusterWithSlowClock() throws Exception {
7877 }, opts -> {
7978 opts .setClock (slowClock );
8079 });
81- // Start second clock with advanced clock. This node is initial leader.
80+ // Start second clock with advanced clock. This node is the initial leader.
8281 startServer (1 , raftServer -> {
8382 String localNodeName = raftServer .clusterService ().topologyService ().localMember ().name ();
8483
@@ -126,27 +125,22 @@ private void startClusterWithSlowClock() throws Exception {
126125 /**
127126 * Tests that a new leader's clock doesn't step down after leadership transfer.
128127 * Verifies that:
129- * 1. Writes succeed with node 1 as leader (regular clock)
130- * 2. After stopping node 1, a new leader is elected (node 0 or 2 with slow clock)
131- * 3. The new leader's clock is not lower than the last applied command time
128+ * 1. Writes succeed with node 1 as leader (advanced clock).
129+ * 2. After stopping node 1, a new leader is elected (node 0 or 2 with slow clock).
130+ * 3. The new leader's clock is not lower than the last applied command time.
132131 *
133132 * @throws Exception If test fails.
134133 */
135134 @ Test
136- @ Timeout (120 )
137135 public void testNewLeaderClockDoesNotStepDown () throws Exception {
138136 startClusterWithSlowClock ();
139-
140137 RaftGroupService client = clients .get (0 );
141-
142138 client .refreshLeader ().get ();
143139 assertNotNull (client .leader (), "Initial leader should be elected" );
144-
145140 // Force leadership to node 1 (server index 1).
146141 String node1Name = servers .get (1 ).clusterService ().topologyService ().localMember ().name ();
147142 Peer node1Peer = initialMembersConf .peer (node1Name );
148143 client .transferLeadership (node1Peer ).get ();
149-
150144 assertTrue (
151145 waitForCondition (() -> {
152146 client .refreshLeader ().join ();
@@ -165,8 +159,7 @@ public void testNewLeaderClockDoesNotStepDown() throws Exception {
165159 // Verify the writes succeeded.
166160 Long valueBeforeUnisolate = client .<Long >run (getValueCommand ()).get ();
167161 assertEquals (expectedValue , valueBeforeUnisolate , "All writes should have succeeded" );
168- HybridTimestamp latestLeaderTime = advancedClock .update (HybridTimestamp .MIN_VALUE );
169-
162+ HybridTimestamp lastAppliedCmdTsFromAdvancedClockLeader = advancedClock .update (HybridTimestamp .MIN_VALUE );
170163 RaftNodeId node1RaftNodeId = new RaftNodeId (TEST_GROUP , node1Peer );
171164 servers .get (1 ).blockMessages (node1RaftNodeId , (msg , peerId ) -> true );
172165 // Now stop the leader.
@@ -176,13 +169,13 @@ public void testNewLeaderClockDoesNotStepDown() throws Exception {
176169 waitForCondition (() -> {
177170 client .refreshLeader ().join ();
178171 return !node1Peer .equals (client .leader ());
179- }, 60_000 ),
172+ }, 30_000 ),
180173 "Leadership should transfer to a slow node"
181174 );
182175 HybridTimestamp slow = slowClock .update (HybridTimestamp .MIN_VALUE );
183- log .info ("clocks slow: {}, reg: {}" , slow , latestLeaderTime );
176+ log .info ("clocks slow: {}, reg: {}" , slow , lastAppliedCmdTsFromAdvancedClockLeader );
184177 // Verify that new leader's clock is not lower than the last applied command time.
185- assertTrue (slow .longValue ( ) >= latestLeaderTime . longValue () );
178+ assertTrue (slow .compareTo ( lastAppliedCmdTsFromAdvancedClockLeader ) >= 0 );
186179 }
187180
188181 /**
0 commit comments