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

mattsicker pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e2d2ad13b9664f122c1b76bbfc22f73b120f3b41
Merge: 3118f47997 945cb7fecb
Author: Matt Sicker <[email protected]>
AuthorDate: Wed Nov 15 19:08:03 2023 -0600

    Merge branch 'main' into the-great-deletion

 .../builders/appender/SyslogAppenderBuilder.java   |   1 +
 .../log4j/builders/layout/HtmlLayoutBuilder.java   |   2 +
 .../log4j/builders/layout/XmlLayoutBuilder.java    |   3 +-
 .../apache/log4j/layout/Log4j1SyslogLayout.java    |  58 +++--
 .../org/apache/log4j/layout/Log4j1XmlLayout.java   |  35 ++-
 .../log4j/layout/Log4j1SyslogLayoutTest.java       |   4 +
 .../apache/log4j/layout/Log4j1XmlLayoutTest.java   |   5 +-
 .../log4j/message/ReusableMessageFactoryTest.java  |  32 +--
 .../logging/log4j/spi/RecyclerFactoriesTest.java   | 114 +++++++++
 .../log4j/spi/ThreadLocalRecyclerFactoryTest.java  | 100 ++++++++
 .../log4j}/util/StringParameterParserTest.java     |  52 ++--
 .../org/apache/logging/log4j/util/StringsTest.java |   9 -
 log4j-api/pom.xml                                  |   7 +
 .../logging/log4j/internal/DefaultLogBuilder.java  |  87 +++----
 .../logging/log4j/message/MessageFactory.java      |  13 +
 .../log4j/message/ParameterizedMessage.java        |  32 ++-
 .../log4j/message/ReusableMessageFactory.java      |  94 ++++----
 .../message/ReusableParameterizedMessage.java      |  57 ++---
 .../apache/logging/log4j/spi/AbstractLogger.java   |  75 +++---
 .../apache/logging/log4j/spi/AbstractRecycler.java |  20 +-
 .../logging/log4j/spi}/DummyRecyclerFactory.java   |  30 ++-
 .../apache/logging/log4j/spi/LoggingSystem.java    |   9 +
 .../logging/log4j/spi/QueueingRecyclerFactory.java |  82 +++++++
 .../org/apache/logging/log4j/spi/Recycler.java     |  34 ++-
 .../apache/logging/log4j/spi/RecyclerAware.java    |  13 +-
 .../logging/log4j/spi/RecyclerFactories.java       | 131 ++++++++++
 .../apache/logging/log4j/spi/RecyclerFactory.java  |  59 +++++
 .../log4j/spi/ThreadLocalRecyclerFactory.java      | 104 ++++++++
 .../apache/logging/log4j/status/StatusLogger.java  |  58 +----
 .../apache/logging/log4j/util/QueueFactories.java  | 234 ++++++++++++++++++
 .../apache/logging/log4j/util/QueueFactory.java    |  19 +-
 .../logging/log4j}/util/StringParameterParser.java |  17 +-
 .../org/apache/logging/log4j/util/Strings.java     |  85 ++-----
 .../appender/SyslogAppenderCustomLayoutTest.java   |   2 +
 .../log4j/core/appender/SyslogAppenderTest.java    |   2 +
 .../log4j/core/async/RingBufferLogEventTest.java   |   4 +-
 .../log4j/core/async/perftest/RunConversant.java   |   2 +-
 .../log4j/core/async/perftest/RunJCTools.java      |   2 +-
 .../logging/log4j/core/config/FileOutputTest.java  |   3 +
 .../core/impl/ReusableLogEventFactoryTest.java     |  56 ++---
 .../core/layout/AbstractStringLayoutTest.java      |  75 +++---
 .../logging/log4j/core/layout/GelfLayoutTest.java  |   6 +-
 .../logging/log4j/core/layout/HtmlLayoutTest.java  |  19 +-
 .../log4j/core/layout/Rfc5424LayoutTest.java       | 111 ++++-----
 .../core/layout/SpyByteBufferDestination.java      |   4 +-
 .../log4j/core/layout/SyslogLayoutTest.java        |   2 +
 .../logging/log4j/core/ReusableLogEvent.java       |  71 ++++++
 .../logging/log4j/core/appender/AsyncAppender.java |  10 +-
 .../log4j/core/appender/OutputStreamManager.java   |  28 +--
 .../log4j/core/appender/SyslogAppender.java        |   3 +
 .../core/async/ArrayBlockingQueueFactory.java      |   8 +-
 .../core/async/AsyncLoggerConfigDisruptor.java     |   5 +-
 .../log4j/core/async/BlockingQueueFactory.java     |   4 +-
 .../core/async/DisruptorBlockingQueueFactory.java  |   8 +-
 .../core/async/JCToolsBlockingQueueFactory.java    |   8 +-
 .../core/async/LinkedTransferQueueFactory.java     |   8 +-
 .../log4j/core/async/RingBufferLogEvent.java       |  83 ++++++-
 .../logging/log4j/core/config/Configuration.java   |  11 +
 .../logging/log4j/core/config/LoggerConfig.java    |   8 +-
 .../logging/log4j/core/impl/DefaultBundle.java     |  13 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java     |  10 +-
 .../logging/log4j/core/impl/LogEventFactory.java   |   2 +
 .../logging/log4j/core/impl/MutableLogEvent.java   |  43 ++--
 .../log4j/core/impl/ReusableLogEventFactory.java   |  56 ++---
 .../logging/log4j/core/layout/AbstractLayout.java  |  83 +++++--
 .../log4j/core/layout/AbstractStringLayout.java    | 144 +++++------
 .../log4j/core/layout/ByteBufferDestination.java   |  67 ------
 .../core/layout/ByteBufferDestinationHelper.java   |  73 ++++++
 .../logging/log4j/core/layout/GelfLayout.java      | 140 ++++++-----
 .../logging/log4j/core/layout/HtmlLayout.java      | 264 ++++++++++++---------
 .../core/layout/LockingStringBuilderEncoder.java   |  16 +-
 .../logging/log4j/core/layout/PatternLayout.java   |  73 +++---
 .../logging/log4j/core/layout/Rfc5424Layout.java   |  44 ++--
 .../log4j/core/layout/StringBuilderEncoder.java    |  81 +++----
 .../logging/log4j/core/layout/SyslogLayout.java    |  52 ++--
 .../log4j/core/layout/TextEncoderHelper.java       |  68 +++---
 .../logging/log4j/core/net/TcpSocketManager.java   |   7 +-
 .../log4j/core/pattern/RepeatPatternConverter.java |   3 +-
 .../apache/logging/log4j/core/util/JsonUtils.java  |  75 +++---
 .../log4j/csv/layout/CsvLogEventLayout.java        |   9 +-
 .../log4j/csv/layout/CsvParameterLayout.java       |   9 +-
 .../log4j/csv/layout/CsvLogEventLayoutTest.java    |   2 +-
 .../log4j/csv/layout/CsvParameterLayoutTest.java   |   3 +-
 .../log4j/flume/appender/FlumeAppender.java        |   2 +
 .../log4j/smtp/appender/SmtpAppenderTest.java      |   2 +
 .../log4j/smtp/appender/SmtpManagerTest.java       |   3 +-
 .../log4j/jackson/json/layout/JsonLayoutTest.java  |  37 +--
 .../log4j/jackson/xml/layout/XmlLayout.java        |   3 +-
 .../log4j/jackson/xml/layout/XmlLayoutTest.java    | 136 +++++------
 .../log4j/jackson/yaml/layout/YamlLayoutTest.java  |   5 +
 .../JsonTemplateLayoutConcurrentEncodeTest.java    |   3 +-
 .../template/json/JsonTemplateLayoutTest.java      |  35 +--
 .../log4j/layout/template/json/LogstashIT.java     |   2 -
 .../json/ThreadLocalRecyclerNestedLoggingTest.java |   4 +-
 .../layout/template/json/util/JsonWriterTest.java  |  39 ++-
 .../template/json/util/RecyclerFactoriesTest.java  | 139 -----------
 .../layout/template/json/JsonTemplateLayout.java   |  93 +-------
 .../template/json/JsonTemplateLayoutDefaults.java  |   8 -
 .../template/json/resolver/CounterResolver.java    |   3 +-
 .../json/resolver/EventResolverContext.java        |  16 --
 .../json/resolver/MessageParameterResolver.java    |   3 +-
 .../json/resolver/ReadOnlyStringMapResolver.java   |   6 +-
 .../json/resolver/StackTraceStringResolver.java    |   8 +-
 .../template/json/util/QueueingRecycler.java       |  61 -----
 .../json/util/QueueingRecyclerFactory.java         |  40 ----
 .../template/json/util/RecyclerFactories.java      | 197 ---------------
 .../template/json/util/ThreadLocalRecycler.java    |  45 ----
 .../json/util/ThreadLocalRecyclerFactory.java      |  40 ----
 .../json/BlackHoleByteBufferDestination.java       |   5 +-
 .../json/JsonTemplateLayoutBenchmarkReport.java    |   3 +-
 .../json/JsonTemplateLayoutBenchmarkState.java     |   4 -
 ...bstractStringLayoutStringEncodingBenchmark.java |  36 ++-
 .../log4j/perf/jmh/TextEncoderHelperBenchmark.java |   5 +-
 .../logging/log4j/perf/nogc/DemoAppender.java      |   5 +-
 .../logging/log4j/perf/util/DemoAppender.java      |   5 +-
 .../plugins/convert/TypeConverterFactory.java      |   3 +
 .../log4j/smtp/appender/SmtpAppenderTest.java      |   2 +
 .../log4j/smtp/appender/SmtpManagerTest.java       |   3 +-
 .../java/org/apache/logging/slf4j/SLF4JLogger.java |  15 +-
 .../log4j/web/Log4jServletContextListener.java     |  64 +++--
 .../logging/log4j/web/Log4jServletFilter.java      |   2 +
 .../log4j/web/ServletRequestThreadContext.java     |  45 ++++
 .../log4j/web/Log4jServletContextListenerTest.java |  88 ++++---
 .../logging/log4j/web/Log4jServletFilterTest.java  |   1 +
 ...w_multiple_servletcontextlistener_instances.xml |  28 +++
 125 files changed, 2691 insertions(+), 2108 deletions(-)

diff --cc log4j-api/pom.xml
index a48e0e5338,835f836db6..42c057471a
--- a/log4j-api/pom.xml
+++ b/log4j-api/pom.xml
@@@ -44,4 -44,21 +44,11 @@@
      </bnd-extra-module-options>
  
    </properties>
+   <dependencies>
 -    <dependency>
 -      <groupId>org.osgi</groupId>
 -      <artifactId>org.osgi.framework</artifactId>
 -      <scope>provided</scope>
 -    </dependency>
 -    <dependency>
 -      <groupId>org.osgi</groupId>
 -      <artifactId>org.osgi.resource</artifactId>
 -      <scope>provided</scope>
 -    </dependency>
+     <dependency>
+       <groupId>org.jctools</groupId>
+       <artifactId>jctools-core</artifactId>
+       <optional>true</optional>
+     </dependency>
+   </dependencies>
  </project>
diff --cc 
log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java
index 55dbf3ecc3,2bfa9debb6..7ce79e87ad
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java
@@@ -104,8 -102,27 +104,9 @@@ public class LoggingSystem 
              () -> getProvider().createContextMap(environment));
      private final Lazy<Supplier<ThreadContextStack>> 
threadContextStackFactoryLazy = environmentLazy.map(environment ->
              () -> getProvider().createContextStack(environment));
+     private final Lazy<RecyclerFactory> recyclerFactoryLazy = 
Lazy.relaxed(RecyclerFactories::getDefault);
  
 -    /**
 -     * Acquires a lock on the initialization of locating a logging system 
provider. This lock should be
 -     * {@linkplain #releaseInitializationLock() released} once the logging 
system provider is loaded. This lock is
 -     * provided to allow for lazy initialization via frameworks like OSGi to 
wait for a provider to be installed
 -     * before allowing initialization to continue.
 -     *
 -     * @see <a 
href="https://issues.apache.org/jira/browse/LOG4J2-373";>LOG4J2-373</a>
 -     */
 -    @InternalApi
 -    public void acquireInitializationLock() {
 -        initializationLock.lock();
 -    }
 -
 -    /**
 -     * Releases a lock on the initialization phase of this logging system.
 -     */
 -    @InternalApi
 -    public void releaseInitializationLock() {
 -        initializationLock.unlock();
 +    public LoggingSystem() {
      }
  
      private SystemProvider getProvider() {
@@@ -186,10 -223,13 +191,14 @@@
          return getInstance().threadContextStackFactoryLazy.value().get();
      }
  
+     public static RecyclerFactory getRecyclerFactory() {
+         return getInstance().recyclerFactoryLazy.value();
+     }
+ 
      private static List<Provider> loadDefaultProviders() {
 -        return ServiceRegistry.getInstance()
 -                .getServices(Provider.class, MethodHandles.lookup(), provider 
-> validVersion(provider.getVersions()));
 +        return 
ServiceLoaderUtil.safeStream(ServiceLoader.load(Provider.class, 
Provider.class.getClassLoader()))
 +                .filter(provider -> validVersion(provider.getVersions()))
 +                .collect(Collectors.toList());
      }
  
      private static List<Provider> loadLegacyProviders() {

Reply via email to