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

rpuch 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 003c9444cd8 IGNITE-26912 Logs flooded with Fail to check install 
snapshot connection (#6884)
003c9444cd8 is described below

commit 003c9444cd8110c923c14e495a82fcb122d5bda2
Author: Aditya Mukhopadhyay <[email protected]>
AuthorDate: Tue Nov 4 13:09:42 2025 +0530

    IGNITE-26912 Logs flooded with Fail to check install snapshot connection 
(#6884)
---
 .../java/org/apache/ignite/raft/jraft/core/Replicator.java   |  7 +++++--
 .../apache/ignite/raft/jraft/core/ReplicatorGroupTest.java   | 12 ++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git 
a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/Replicator.java 
b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/Replicator.java
index 011e24378a6..78b61dd2256 100644
--- 
a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/Replicator.java
+++ 
b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/Replicator.java
@@ -39,6 +39,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.IgniteThrottledLogger;
 import org.apache.ignite.internal.logger.Loggers;
 import org.apache.ignite.raft.jraft.Node;
 import org.apache.ignite.raft.jraft.Status;
@@ -83,6 +84,7 @@ public class Replicator implements ThreadId.OnError {
     private static final IgniteLogger LOG = Loggers.forClass(Replicator.class);
 
     private final RaftClientService rpcService;
+    private final IgniteThrottledLogger throttledLogger;
     // Next sending log index
     private volatile long nextIndex;
     private int consecutiveErrorTimes = 0;
@@ -173,6 +175,7 @@ public class Replicator implements ThreadId.OnError {
         this.rpcService = replicatorOptions.getRaftRpcService();
         this.metricName = getReplicatorMetricName(replicatorOptions);
         this.inflightsCountMetricName = name(this.metricName, 
"replicate-inflights-count");
+        this.throttledLogger = Loggers.toThrottledLogger(LOG, 
options.getCommonExecutor());
         setState(State.Created);
     }
 
@@ -609,8 +612,8 @@ public class Replicator implements ThreadId.OnError {
         }
         boolean doUnlock = true;
         if (!this.rpcService.connect(this.options.getPeerId())) {
-            LOG.error("Fail to check install snapshot connection to node={}, 
give up to send install snapshot request.",
-                this.options.getNode().getNodeId());
+            throttledLogger.warn("Fail to check install snapshot connection to 
node={}, give up to send install snapshot request."
+                            + " Check if node is up.", 
this.options.getNode().getNodeId());
             block(Utils.nowMs(), RaftError.EHOSTDOWN.getNumber());
             return;
         }
diff --git 
a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/core/ReplicatorGroupTest.java
 
b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/core/ReplicatorGroupTest.java
index e0ddd4ae367..91819b200c3 100644
--- 
a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/core/ReplicatorGroupTest.java
+++ 
b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/core/ReplicatorGroupTest.java
@@ -26,8 +26,10 @@ import static org.mockito.ArgumentMatchers.eq;
 
 import java.util.Arrays;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
+import org.apache.ignite.raft.jraft.JRaftUtils;
 import org.apache.ignite.raft.jraft.Status;
 import org.apache.ignite.raft.jraft.conf.Configuration;
 import org.apache.ignite.raft.jraft.conf.ConfigurationEntry;
@@ -40,6 +42,8 @@ import org.apache.ignite.raft.jraft.rpc.RaftClientService;
 import org.apache.ignite.raft.jraft.rpc.RpcRequests;
 import org.apache.ignite.raft.jraft.storage.LogManager;
 import org.apache.ignite.raft.jraft.storage.SnapshotStorage;
+import org.apache.ignite.raft.jraft.util.ExecutorServiceHelper;
+import org.apache.ignite.raft.jraft.util.Utils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -57,6 +61,7 @@ import org.mockito.stubbing.Answer;
 public class ReplicatorGroupTest extends BaseIgniteAbstractTest {
     private TimerManager timerManager;
     private ReplicatorGroupImpl replicatorGroup;
+    private ExecutorService executor;
     @Mock
     private BallotBox ballotBox;
     @Mock
@@ -90,10 +95,16 @@ public class ReplicatorGroupTest extends 
BaseIgniteAbstractTest {
         rgOpts.setSnapshotStorage(this.snapshotStorage);
         rgOpts.setRaftOptions(this.raftOptions);
         rgOpts.setTimerManager(this.timerManager);
+
+        NodeOptions options = new NodeOptions();
+        executor = JRaftUtils.createExecutor("test-node", "test-executor-", 
Utils.cpus());
+        options.setCommonExecutor(executor);
+
         Mockito.when(this.logManager.getLastLogIndex()).thenReturn(10L);
         Mockito.when(this.logManager.getTerm(10)).thenReturn(1L);
         Mockito.when(this.node.getNodeMetrics()).thenReturn(new 
NodeMetrics(false));
         Mockito.when(this.node.getNodeId()).thenReturn(new NodeId("test", new 
PeerId("localhost", 8081)));
+        Mockito.when(this.node.getOptions()).thenReturn(options);
         mockSendEmptyEntries();
         assertTrue(this.replicatorGroup.init(this.node.getNodeId(), rgOpts));
     }
@@ -248,6 +259,7 @@ public class ReplicatorGroupTest extends 
BaseIgniteAbstractTest {
         this.errorCounter.set(0);
         this.stoppedCounter.set(0);
         this.startedCounter.set(0);
+        ExecutorServiceHelper.shutdownAndAwaitTermination(executor);
     }
 
     private int heartbeatTimeout(final int electionTimeout) {

Reply via email to