This is an automated email from the ASF dual-hosted git repository.
mpochatkin 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 da542549313 IGNITE-26097 Duplicate events in the log inspector (#6355)
da542549313 is described below
commit da542549313be84c836ef02a6b49c7f8d00c0fb7
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Mon Aug 4 16:38:00 2025 +0300
IGNITE-26097 Duplicate events in the log inspector (#6355)
---
.../testframework/log4j2/LogInspector.java | 28 +++++++++++++---------
.../FailureProcessorThreadDumpThrottlingTest.java | 8 +++----
.../placementdriver/LeaseNegotiationTest.java | 3 +--
.../ignite/raft/server/ItConnectionErrorTest.java | 3 +--
4 files changed, 22 insertions(+), 20 deletions(-)
diff --git
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/log4j2/LogInspector.java
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/log4j2/LogInspector.java
index 11a708b6172..d7089e1cfcb 100755
---
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/log4j2/LogInspector.java
+++
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/log4j2/LogInspector.java
@@ -24,6 +24,7 @@ import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.IntStream;
import org.apache.logging.log4j.LogManager;
@@ -177,7 +178,7 @@ public class LogInspector {
* @param action Action to be executed when the {@code predicate} is
matched.
*/
public LogInspector(String loggerName, Predicate<LogEvent> predicate,
Runnable action) {
- this(loggerName, new Handler(predicate, action));
+ this(loggerName, new Handler(predicate, event -> action.run()));
}
/**
@@ -214,7 +215,7 @@ public class LogInspector {
* @return New instance of {@link Handler}.
*/
public Handler addHandler(Predicate<LogEvent> predicate, Runnable action) {
- Handler handler = new Handler(predicate, action);
+ Handler handler = new Handler(predicate, event -> action.run());
addHandler(handler);
@@ -313,11 +314,16 @@ public class LogInspector {
appender.stop();
removeAppender(appender, config);
+
+ config = null;
}
private static synchronized void addAppender(Appender appender,
Configuration config) {
for (LoggerConfig loggerConfig : config.getLoggers().values()) {
- loggerConfig.addAppender(appender, null, null);
+ // Only add appender to the non-additive logger to prevent event
duplication.
+ if (!loggerConfig.isAdditive()) {
+ loggerConfig.addAppender(appender, null, null);
+ }
}
config.getRootLogger().addAppender(appender, null, null);
}
@@ -336,8 +342,8 @@ public class LogInspector {
/** Predicate that is used to check log messages. */
private final Predicate<LogEvent> predicate;
- /** Action to be executed when the {@code predicate} is matched. */
- private final Runnable action;
+ /** Consumer to be supplied with event when the {@code predicate} is
matched. */
+ private final Consumer<LogEvent> consumer;
/** Counter that indicates how many times the predicate has matched. */
private final AtomicInteger timesMatched = new AtomicInteger();
@@ -346,14 +352,14 @@ public class LogInspector {
* Creates a new instance of {@link Handler}.
*
* @param predicate Predicate to check log messages.
- * @param action Action to be executed when the {@code predicate} is
matched.
+ * @param consumer Consumer to be supplied with the event when the
{@code predicate} is matched.
*/
- public Handler(Predicate<LogEvent> predicate, Runnable action) {
+ public Handler(Predicate<LogEvent> predicate, Consumer<LogEvent>
consumer) {
Objects.requireNonNull(predicate);
- Objects.requireNonNull(action);
+ Objects.requireNonNull(consumer);
this.predicate = predicate;
- this.action = action;
+ this.consumer = consumer;
}
/**
@@ -376,7 +382,7 @@ public class LogInspector {
}
private class TestLogAppender extends AbstractAppender {
- public TestLogAppender(String name) {
+ private TestLogAppender(String name) {
super(name, null, null, true, Property.EMPTY_ARRAY);
}
@@ -391,7 +397,7 @@ public class LogInspector {
handlers.forEach(handler -> {
if (handler.predicate.test(event)) {
handler.timesMatched.incrementAndGet();
- handler.action.run();
+ handler.consumer.accept(event);
}
});
} finally {
diff --git
a/modules/failure-handler/src/test/java/org/apache/ignite/internal/failure/FailureProcessorThreadDumpThrottlingTest.java
b/modules/failure-handler/src/test/java/org/apache/ignite/internal/failure/FailureProcessorThreadDumpThrottlingTest.java
index 52c69046e6a..963cb922bba 100644
---
a/modules/failure-handler/src/test/java/org/apache/ignite/internal/failure/FailureProcessorThreadDumpThrottlingTest.java
+++
b/modules/failure-handler/src/test/java/org/apache/ignite/internal/failure/FailureProcessorThreadDumpThrottlingTest.java
@@ -95,12 +95,10 @@ public class FailureProcessorThreadDumpThrottlingTest
extends BaseIgniteAbstract
*/
@Test
public void testNoThrottling() {
- AtomicInteger messageCounter = new AtomicInteger();
-
LogInspector logInspector = new LogInspector(
FailureManager.class.getName(),
- evt ->
evt.getMessage().getFormattedMessage().startsWith(THREAD_DUMP_MSG),
- messageCounter::incrementAndGet);
+ evt ->
evt.getMessage().getFormattedMessage().startsWith(THREAD_DUMP_MSG)
+ );
logInspector.start();
try {
@@ -116,7 +114,7 @@ public class FailureProcessorThreadDumpThrottlingTest
extends BaseIgniteAbstract
logInspector.stop();
}
- assertThat(messageCounter.get(), is(2));
+ assertThat(logInspector.timesMatched().sum(), is(2));
}
/**
diff --git
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
index d53bbd716e1..80133f0c505 100644
---
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
+++
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
@@ -88,7 +88,6 @@ import org.apache.ignite.internal.replicator.ZonePartitionId;
import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.log4j2.LogInspector;
-import org.apache.ignite.internal.testframework.log4j2.LogInspector.Handler;
import org.apache.ignite.network.NetworkAddress;
import org.apache.logging.log4j.core.LogEvent;
import org.jetbrains.annotations.Nullable;
@@ -514,7 +513,7 @@ public class LeaseNegotiationTest extends
BaseIgniteAbstractTest {
Predicate<LogEvent> pred = logEvent ->
logEvent.getMessage().getFormattedMessage()
.contains("Lease was not negotiated due to exception");
- LogInspector logInspector = new
LogInspector(LeaseNegotiator.class.getName(), new Handler(pred, () -> {}));
+ LogInspector logInspector = new
LogInspector(LeaseNegotiator.class.getName(), pred);
logInspector.start();
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItConnectionErrorTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItConnectionErrorTest.java
index 83a19b412fa..c86da4c7aa4 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItConnectionErrorTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItConnectionErrorTest.java
@@ -44,7 +44,6 @@ import
org.apache.ignite.internal.raft.service.RaftGroupService;
import org.apache.ignite.internal.raft.util.ThreadLocalOptimizedMarshaller;
import org.apache.ignite.internal.replicator.TestReplicationGroupId;
import org.apache.ignite.internal.testframework.log4j2.LogInspector;
-import org.apache.ignite.internal.testframework.log4j2.LogInspector.Handler;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.raft.jraft.core.Replicator;
import org.apache.ignite.raft.jraft.core.ReplicatorGroupImpl;
@@ -171,7 +170,7 @@ public class ItConnectionErrorTest extends
JraftAbstractTest {
return false;
};
- return new LogInspector(cls.getName(), new Handler(pred, () -> {}));
+ return new LogInspector(cls.getName(), pred);
}
private static void stopLogInspectors(List<LogInspector> logInspectors) {