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) {