From babed36feab2eb453e9849365cf5291a93464956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Mon, 10 Jan 2022 12:35:20 +0100 Subject: [PATCH] HSEARCH-4434 Avoid unnecessary synchronization in ExpectedLog4jLog --- .../util/impl/test/rule/log4j/LogChecker.java | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/util/internal/test/common/src/main/java/org/hibernate/search/util/impl/test/rule/log4j/LogChecker.java b/util/internal/test/common/src/main/java/org/hibernate/search/util/impl/test/rule/log4j/LogChecker.java index af927ad6fbd..61a40a4b618 100644 --- a/util/internal/test/common/src/main/java/org/hibernate/search/util/impl/test/rule/log4j/LogChecker.java +++ b/util/internal/test/common/src/main/java/org/hibernate/search/util/impl/test/rule/log4j/LogChecker.java @@ -15,7 +15,7 @@ public class LogChecker { private final LogExpectation expectation; - private int count = 0; + private volatile int count = 0; private List matchingEvents; private List extraEvents; @@ -43,26 +43,30 @@ public void appendFailure(Description description, String newline) { } } - // This must be synchronized to avoid problems when multiple threads issue log events concurrently - synchronized void process(LogEvent event) { + void process(LogEvent event) { if ( expectation.getMaxExpectedCount() == null && expectation.getMinExpectedCount() <= count ) { // We don't care about events anymore, expectations are met and it won't change return; } if ( expectation.getMatcher().matches( event ) ) { - ++count; - if ( expectation.getMaxExpectedCount() != null && count > expectation.getMaxExpectedCount() ) { - if ( extraEvents == null ) { - extraEvents = new ArrayList<>(); - } - extraEvents.add( event.toImmutable() ); + processMatching( event ); + } + } + + // This must be synchronized to avoid problems when multiple threads issue log events concurrently + private synchronized void processMatching(LogEvent event) { + ++count; + if ( expectation.getMaxExpectedCount() != null && count > expectation.getMaxExpectedCount() ) { + if ( extraEvents == null ) { + extraEvents = new ArrayList<>(); } - else { - if ( matchingEvents == null ) { - matchingEvents = new ArrayList<>(); - } - matchingEvents.add( event.toImmutable() ); + extraEvents.add( event.toImmutable() ); + } + else { + if ( matchingEvents == null ) { + matchingEvents = new ArrayList<>(); } + matchingEvents.add( event.toImmutable() ); } }