Sorry, fixed.
On Sun, Jul 1, 2018 at 8:03 PM, Ralph Goers <[email protected]> wrote: > This commit is broken. There were merge conflicts in changes.xml that were > not properly resolved. Please fix this asap. > > Ralph > > >> On Jun 29, 2018, at 7:53 PM, [email protected] wrote: >> >> Repository: logging-log4j2 >> Updated Branches: >> refs/heads/release-2.x b66f09c34 -> 377afa006 >> >> >> LOG4J2-2362 ReusableObjectMessage memory leak >> >> ReusableObjectMessage would previously retain a reference to >> the most recently logged object. >> >> >> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/377afa00 >> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/377afa00 >> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/377afa00 >> >> Branch: refs/heads/release-2.x >> Commit: 377afa006b5102c508f1e6578bc05da24385907f >> Parents: b66f09c >> Author: Carter Kozak <[email protected]> >> Authored: Fri Jun 29 16:02:55 2018 -0400 >> Committer: Carter Kozak <[email protected]> >> Committed: Fri Jun 29 22:52:54 2018 -0400 >> >> ---------------------------------------------------------------------- >> .../log4j/message/ReusableMessageFactory.java | 2 + >> .../apache/logging/log4j/LambdaLoggerTest.java | 5 +- >> .../core/EventParameterMemoryLeakTest.java | 10 +- >> src/changes/changes.xml | 174 +++++++++++++++++++ >> 4 files changed, 188 insertions(+), 3 deletions(-) >> ---------------------------------------------------------------------- >> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/377afa00/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java >> ---------------------------------------------------------------------- >> diff --git >> a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java >> >> b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java >> index d75ca01..c258045 100644 >> --- >> a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java >> +++ >> b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java >> @@ -86,6 +86,8 @@ public final class ReusableMessageFactory implements >> MessageFactory2, Serializab >> public static void release(final Message message) { // LOG4J2-1583 >> if (message instanceof ReusableParameterizedMessage) { >> ((ReusableParameterizedMessage) message).reserved = false; >> + } else if (message instanceof ReusableObjectMessage) { >> + ((ReusableObjectMessage) message).set(null); >> } >> } >> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/377afa00/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java >> ---------------------------------------------------------------------- >> diff --git >> a/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java >> b/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java >> index f6d1623..b532171 100644 >> --- a/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java >> +++ b/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java >> @@ -21,6 +21,7 @@ import java.util.ArrayList; >> import java.util.List; >> >> import org.apache.logging.log4j.message.Message; >> +import org.apache.logging.log4j.message.ReusableMessage; >> import org.apache.logging.log4j.message.SimpleMessage; >> import org.apache.logging.log4j.spi.AbstractLogger; >> import org.apache.logging.log4j.util.Supplier; >> @@ -46,7 +47,9 @@ public class LambdaLoggerTest { >> this.fqcn = fqcn; >> this.level = level; >> this.marker = marker; >> - this.message = message; >> + this.message = (message instanceof ReusableMessage) ? >> + ((ReusableMessage) message).memento() : >> + message; >> this.throwable = t; >> } >> } >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/377afa00/log4j-core/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java >> ---------------------------------------------------------------------- >> diff --git >> a/log4j-core/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java >> >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java >> index de99eef..d2106f9 100644 >> --- >> a/log4j-core/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java >> +++ >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java >> @@ -49,21 +49,27 @@ public class EventParameterMemoryLeakTest { >> } >> >> @Test >> + @SuppressWarnings("UnusedAssignment") // parameter set to null to allow >> garbage collection >> public void testParametersAreNotLeaked() throws Exception { >> final File file = new File("target", >> "EventParameterMemoryLeakTest.log"); >> assertTrue("Deleted old file before test", !file.exists() || >> file.delete()); >> >> final Logger log = LogManager.getLogger("com.foo.Bar"); >> CountDownLatch latch = new CountDownLatch(1); >> - log.info("Message with parameter {}", new >> ParameterObject("paramValue", latch)); >> + Object parameter = new ParameterObject("paramValue", latch); >> + log.info("Message with parameter {}", parameter); >> + log.info(parameter); >> + parameter = null; >> CoreLoggerContexts.stopLoggerContext(file); >> final BufferedReader reader = new BufferedReader(new >> FileReader(file)); >> final String line1 = reader.readLine(); >> final String line2 = reader.readLine(); >> + final String line3 = reader.readLine(); >> reader.close(); >> file.delete(); >> assertThat(line1, containsString("Message with parameter >> paramValue")); >> - assertNull("Expected only a single line", line2); >> + assertThat(line2, containsString("paramValue")); >> + assertNull("Expected only a two lines", line3); >> GarbageCollectionHelper gcHelper = new GarbageCollectionHelper(); >> gcHelper.run(); >> try { >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/377afa00/src/changes/changes.xml >> ---------------------------------------------------------------------- >> diff --git a/src/changes/changes.xml b/src/changes/changes.xml >> index d9e0790..9fab226 100644 >> --- a/src/changes/changes.xml >> +++ b/src/changes/changes.xml >> @@ -30,6 +30,177 @@ >> - "update" - Change >> - "remove" - Removed >> --> >> +<<<<<<< HEAD >> +======= >> + <release version="3.0.0" date="2018-xx-xx" description="GA Release >> 3.0.0"> >> + <action issue="LOG4J2-2171" dev="rmannibucau" type="add"> >> + Allow to force LOG4J2 to use TCCL only. >> + </action> >> + <action issue="LOG4J2-1802" dev="mattsicker" type="add"> >> + Convert documentation into AsciiDoc format. >> + </action> >> + <action issue="LOG4J2-2268" dev="rgoers" type="fix" due-to="Tilman >> Hausherr"> >> + Improve plugin error message when elements are missing. >> + </action> >> + <action issue="LOG4J2-2255" dev="rgoers" type="update"> >> + Use Spotbugs instead of Findbugs. Minimum version is Java 8. >> + </action> >> + <action issue="LOG4J2-2224" dev="rpopma" type="update"> >> + Renamed package core.util.datetime to core.time.internal.format to >> clarify these classes are to be considered private. >> + </action> >> + <action issue="LOG4J2-2225" dev="rpopma" type="update"> >> + Moved time-related classes from core.util to core.time. Classes >> considered private moved to core.time.internal. >> + </action> >> + <action issue="LOG4J2-2228" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Split off ZeroMq/JeroMq support into a new module log4j-jeromq. >> + </action> >> + <action issue="LOG4J2-2227" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Split off Kafka support into a new module log4j-kafka. >> + </action> >> + <action issue="LOG4J2-2230" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Split off SMTP support into a new module log4j-smtp. >> + </action> >> + <action issue="LOG4J2-2231" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Move CSV layout from log4j-core to a new module log4j-csv. >> + </action> >> + <action issue="LOG4J2-2232" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Move JMS code to a new module log4j-jms. >> + </action> >> + <action issue="LOG4J2-2233" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Move JDBC code to a new module log4j-jdbc. >> + </action> >> + <action issue="LOG4J2-2244" dev="ggregory" type="fix" due-to="Gary >> Gregory"> >> + org.apache.logging.log4j.core.lookup.EnvironmentLookup may throw >> NPE. >> + </action> >> + <action issue="LOG4J2-2237" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Move Jackson-based layouts to their own modules: JSON, XML, and >> YAML. >> + </action> >> + <action issue="LOG4J2-2082" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Update Apache Flume from 1.7.0 to 1.8.0. >> + </action> >> + <action issue="LOG4J2-2079" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Update Conversant Disruptor from 1.12.10 to 1.12.11. >> + </action> >> + <action issue="LOG4J2-2258" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Update LMAX Disruptor from 3.3.7 to 3.3.8. >> + </action> >> + <action issue="LOG4J2-2083" dev="ggregory" type="update" due-to="Gary >> Gregory"> >> + Update Eclipse javax.persistence from 2.1.1 to 2.2.0. >> + </action> >> + <action issue="LOG4J2-2083" dev="ggregory" type="update"> >> + Update build to expect Java 8 sources and generate Java 8 byte >> codes. >> + </action> >> + <action issue="LOG4J2-2259" dev="ggregory" type="update"> >> + Update MongoDB 3 module from driver 3.6.1 to 3.6.3. >> + </action> >> + <action issue="LOG4J2-2260" dev="ggregory" type="update"> >> + [SMTP] Update javax.mail from 1.6.0 to 1.6.1. >> + </action> >> + <action issue="LOG4J2-2270" dev="ggregory" type="fix" due-to="Cyril >> Martin"> >> + Strings::join, when called with [null] returns "null" instead of >> EMPTY. >> + </action> >> + <action issue="LOG4J2-2276" dev="ggregory" type="fix" due-to="Sean >> Baxter"> >> + ConcurrentModificationException from >> org.apache.logging.log4j.status.StatusLogger.<clinit>(StatusLogger.java:71). >> + </action> >> + <action issue="LOG4J2-2274" dev="ggregory" type="fix" >> due-to="Sebastien Lannez"> >> + Allow EnvironmentPropertySource to run with a SecurityManager that >> rejects environment variable access. >> + </action> >> + <action issue="LOG4J2-2279" dev="ggregory" type="fix" due-to="Gary >> Gregory"> >> + Allow SystemPropertiesPropertySource to run with a SecurityManager >> that rejects system property access. >> + </action> >> + <action issue="LOG4J2-2279" dev="ggregory" type="fix" due-to="Remko >> Popma"> >> + Move ProcessIdUtil from log4j-api to log4j-core. >> + </action> >> + <action issue="LOG4J2-2283" dev="ggregory" type="fix" due-to="Vishnu >> Priya Matha"> >> + ParserConfigurationException when using Log4j with >> oracle.xml.jaxp.JXDocumentBuilderFactory. >> + </action> >> + <action issue="LOG4J2-2300" dev="ggregory" type="fix"> >> + PoolingDriverConnectionSource does not take into account >> properties, user name, and password. >> + </action> >> + <action issue="LOG4J2-2302" dev="ggregory" type="update"> >> + Status logger should show the Log4j name and version when >> initializing itself. >> + </action> >> + <action issue="LOG4J2-2304" dev="ggregory" type="update" >> due-to="wumengsheng"> >> + Log4j2 2.8.2 JMX unregister NullPointerException. >> + </action> >> + <action issue="LOG4J2-2306" dev="ckozak" type="fix"> >> + FixedDateFormat parses timezone offsets, -8:00 is interpreted as >> GMT-8:00. >> + </action> >> + <action issue="LOG4J2-2307" dev="ckozak" type="fix"> >> + MutableLogEvent and RingBufferLogEvent message mementos retain the >> original format string. >> + </action> >> + <action issue="LOG4J2-2032" dev="ckozak" type="fix" >> due-to="Kostiantyn Shchepanovskyi"> >> + Curly braces in parameters are not treated as placeholders. >> + </action> >> + <action issue="LOG4J2-2311" dev="ggregory" type="update"> >> + Update Jackson from 2.9.4 to 2.9.5. >> + </action> >> + <action issue="LOG4J2-2313" dev="ggregory" type="update"> >> + Update LMAX Disruptor from 3.3.8 to 3.4.2. >> + </action> >> + <action issue="LOG4J2-2317" dev="ckozak" type="fix"> >> + MutableLogEvent.getNonNullImmutableMessage and >> Log4jLogEvent.makeMessageImmutable retain format and parameters. >> + </action> >> + <action issue="LOG4J2-2318" dev="ckozak" type="fix"> >> + Messages are no longer mutated when the asynchronous queue is full. >> A warning is logged to the status logger instead. >> + </action> >> + <action issue="LOG4J2-2320" dev="ckozak" type="fix"> >> + Fix NPE in AbstractLogger when another exception is thrown, masking >> the root cause. >> + </action> >> + <action issue="LOG4J2-548" dev="ggregory" type="update" >> due-to="Shehata, Paresh Varke, Eric Victorson, Martin Laforet"> >> + Log4j 2.0 ERROR "Could not search jar" with JBoss EAP 6.2. >> + </action> >> + <action issue="LOG4J2-2321" dev="ckozak" type="fix"> >> + AsyncLogger uses the correct level when unspecified. This provides >> parity between AsyncLogger and Logger. >> + </action> >> + <action issue="LOG4J2-2322" dev="ckozak" type="fix"> >> + Custom ContextSelector implementations which select an >> AsyncLoggerContext disable LoggerConfig.includeLocation >> + by default for parity with AsyncLoggerContextSelector. >> + </action> >> + <action issue="LOG4J2-2269" dev="ckozak" type="fix"> >> + MutableLogEvent references to other objects are cleared after each >> use. >> + Fix a memory leak causing references to parameters to be held after >> synchronous logging with thread locals enabled. >> + </action> >> + <action issue="LOG4J2-2328" dev="ggregory" type="update"> >> + Update JAnsi from 1.17 to 1.17.1. >> + </action> >> + <action issue="LOG4J2-2301" dev="ckozak" type="fix"> >> + Mixed async loggers no longer forget parameter values, providing >> some appenders with an array of nulls. >> + </action> >> + <action issue="LOG4J2-2331" dev="ckozak" type="fix" due-to="Mike >> Baranski"> >> + RollingFileManager debug logging avoids string concatenation and >> errant braces in favor of parameterized logging. >> + </action> >> + <action issue="LOG4J2-2333" dev="ckozak" type="fix"> >> + Handle errors thrown in default disruptor ExceptionHandler >> implementations to avoid killing background threads. >> + </action> >> + <action issue="LOG4J2-2334" dev="ggregory" type="fix"> >> + Add API >> org.apache.logging.log4j.core.appender.AsyncAppender.getQueueSize(). >> + </action> >> + <action issue="LOG4J2-2336" dev="ckozak" type="fix"> >> + Remove duplicate hyphen from the AsyncLoggerConfig background >> thread name. >> + </action> >> + <action issue="LOG4J2-2347" dev="ggregory" type="fix"> >> + Update Apache Commons Compress from 1.16.1 to 1.17. >> + </action> >> + <action issue="LOG4J2-2351" dev="ckozak" type="update"> >> + Added AbstractLogEvent.getMutableInstant to allow the >> MutableInstant instance to be modified by classes extending AbstractLogEvent. >> + </action> >> + <action issue="LOG4J2-2352" dev="ckozak" type="fix"> >> + RingBufferLogEvent memento messages provide the expected format >> string, and no longer attempt to substitute parameters into curly braces in >> parameter toString values. >> + Both RingBufferLogEvent and MutableLogEvent memento implementations >> memoize results to avoid rebuilding formatted string values. >> + </action> >> + <action issue="LOG4J2-2355" dev="ckozak" type="fix" due-to="Henrik >> Brautaset Aronsen"> >> + PropertiesUtil ignores non-string system properties. Fixes a >> NoClassDefFoundError initializing StatusLogger >> + caused by an NPE while initializing the static PropertiesUtil field. >> + </action> >> + <action issue="LOG4J2-2357" dev="ggregory" type="update"> >> + Update Jackson from 2.9.5 to 2.9.6. >> + </action> >> + <action issue="LOG4J2-2362" dev="ckozak" type="fix"> >> + Fixed a memory leak in which ReusableObjectMessage would hold a >> reference to the most recently logged object. >> + </action> >> + </release> >> +>>>>>>> 063e725b8... LOG4J2-2362 ReusableObjectMessage memory leak >> <release version="2.11.1" date="2018-MM-DD" description="GA Release >> 2.11.1"> >> <action issue="LOG4J2-2268" dev="rgoers" type="fix" due-to="Tilman >> Hausherr"> >> Improve plugin error message when elements are missing. >> @@ -119,6 +290,9 @@ >> <action issue="LOG4J2-2358" dev="ggregory" type="update"> >> Update Kafka client from 1.0.0 to 1.1.0. >> </action> >> + <action issue="LOG4J2-2362" dev="ckozak" type="fix"> >> + Fixed a memory leak in which ReusableObjectMessage would hold a >> reference to the most recently logged object. >> + </action> >> </release> >> <release version="2.11.0" date="2018-03-11" description="GA Release >> 2.11.0"> >> <action issue="LOG4J2-2104" dev="rgoers" type="fix"> >> >> > >
