LOG4J2-2867: RingBufferLogEventTranslator uses a static ContextDataInjector
Previously a new instance was created for each translator, which
occurred on every thread.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
index c777cae..c536c04 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
@@ -37,7 +37,7 @@
public class RingBufferLogEventTranslator implements
EventTranslator<RingBufferLogEvent> {
- private final ContextDataInjector injector = ContextDataInjectorFactory.createInjector();
+ private static final ContextDataInjector INJECTOR = ContextDataInjectorFactory.createInjector();
private AsyncLogger asyncLogger;
String loggerName;
protected Marker marker;
@@ -60,7 +60,7 @@
event.setValues(asyncLogger, loggerName, marker, fqcn, level, message, thrown,
// config properties are taken care of in the EventHandler thread
// in the AsyncLogger#actualAsyncLog method
- injector.injectContextData(null, (StringMap) event.getContextData()), contextStack,
+ INJECTOR.injectContextData(null, (StringMap) event.getContextData()), contextStack,
threadId, threadName, threadPriority, location, clock, nanoClock);
clear(); // clear the translator
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ebe7a10..0ee5b3a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -197,6 +197,10 @@
Disruptor and JUL no longer recursively start the AsyncLoggerDisruptor
resulting in an extra disruptor background thread constantly waiting.
</action>
+ <action issue="LOG4J2-2867" dev="ckozak" type="fix">
+ RingBufferLogEventTranslator uses a static ContextDataInjector instead of initializing a new object
+ on each thread.
+ </action>
</release>
<release version="2.13.3" date="2020-05-10" description="GA Release 2.13.3">
<action issue="LOG4J2-2838" dev="rgoers" type="fix">