Repository: logging-log4j2 Updated Branches: refs/heads/master 74942b3bd -> 74df59c51
[LOG4J2-2306] Compile with Error Prone for static analysis Fixes several minor bugs uncovered by error prone. Offset timezones are correctly parsed rather than using GMT. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/74df59c5 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/74df59c5 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/74df59c5 Branch: refs/heads/master Commit: 74df59c51ff62589ec9b9e7df11c27b9b88edc51 Parents: 74942b3 Author: Carter Kozak <cko...@apache.org> Authored: Wed Apr 4 15:35:46 2018 -0400 Committer: Carter Kozak <cko...@apache.org> Committed: Wed Apr 4 22:14:44 2018 -0400 ---------------------------------------------------------------------- log4j-api-java9/pom.xml | 2 ++ .../log4j/util/SortedArrayStringMapTest.java | 1 + .../apache/logging/log4j/PerformanceComparison.java | 4 +++- .../logging/log4j/core/impl/Log4jLogEvent.java | 2 +- .../org/apache/logging/log4j/core/jmx/Server.java | 6 +++--- .../core/time/internal/format/FixedDateFormat.java | 6 +++++- .../logging/log4j/core/filter/TimeFilterTest.java | 5 +++-- .../log4j/core/lookup/ResourceBundleLookupTest.java | 1 + .../time/internal/format/FastDateParserTest.java | 2 +- .../time/internal/format/FixedDateFormatTest.java | 2 +- .../CsvJsonParameterLayoutFileAppenderTest.java | 1 + .../flume/appender/FlumeEmbeddedAppenderTest.java | 9 ++++++--- .../log4j/kafka/appender/KafkaAppenderTest.java | 1 - log4j-perf/pom.xml | 2 ++ pom.xml | 16 ++++++++++++++++ src/changes/changes.xml | 3 +++ 16 files changed, 49 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-api-java9/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-api-java9/pom.xml b/log4j-api-java9/pom.xml index 793c4b9..3d3a406 100644 --- a/log4j-api-java9/pom.xml +++ b/log4j-api-java9/pom.xml @@ -89,6 +89,8 @@ <target>9</target> <release>9</release> <proc>none</proc> + <!-- disable errorprone --> + <compilerId>javac</compilerId> </configuration> </plugin> <plugin> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-api/src/test/java/org/apache/logging/log4j/util/SortedArrayStringMapTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/SortedArrayStringMapTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/SortedArrayStringMapTest.java index 3d9ce3e..ea333ae 100644 --- a/log4j-api/src/test/java/org/apache/logging/log4j/util/SortedArrayStringMapTest.java +++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/SortedArrayStringMapTest.java @@ -47,6 +47,7 @@ public class SortedArrayStringMapTest { new SortedArrayStringMap(-1); } + @Test public void testConstructorAllowsZeroCapacity() throws Exception { SortedArrayStringMap sortedArrayStringMap = new SortedArrayStringMap(0); assertEquals(0, sortedArrayStringMap.size()); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java ---------------------------------------------------------------------- diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java index 5c3aad6..a2c1007 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java @@ -30,6 +30,7 @@ import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.util.Profiler; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -109,7 +110,8 @@ public class PerformanceComparison { System.out.println("###############################################"); } - //@Test + @Test + @Ignore public void testRawPerformance() throws Exception { final OutputStream os = new FileOutputStream("target/testos.log", true); final long result1 = writeToStream(COUNT, os); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java index 455de65..11cb3dd 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java @@ -864,7 +864,7 @@ public class Log4jLogEvent implements LogEvent { result = 31 * result + (contextStack != null ? contextStack.hashCode() : 0); result = 31 * result + (int) (threadId ^ (threadId >>> 32)); result = 31 * result + (threadName != null ? threadName.hashCode() : 0); - result = 31 * result + (threadPriority ^ (threadPriority >>> 32)); + result = 31 * result + threadPriority; result = 31 * result + (source != null ? source.hashCode() : 0); result = 31 * result + (includeLocation ? 1 : 0); result = 31 * result + (endOfBatch ? 1 : 0); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java index 04eaa3d..dc5a3fa 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java @@ -257,7 +257,7 @@ public final class Server { * @param mbs the MBean Server to unregister the instrumented objects from */ public static void unregisterLoggerContext(final String contextName, final MBeanServer mbs) { - final String search = String.format(LoggerContextAdminMBean.PATTERN, escape(contextName), "*"); + final String search = String.format(LoggerContextAdminMBean.PATTERN, escape(contextName)); unregisterAllMatching(search, mbs); // unregister context mbean // now unregister all MBeans associated with this logger context @@ -286,12 +286,12 @@ public final class Server { } private static void unregisterStatusLogger(final String contextName, final MBeanServer mbs) { - final String search = String.format(StatusLoggerAdminMBean.PATTERN, escape(contextName), "*"); + final String search = String.format(StatusLoggerAdminMBean.PATTERN, escape(contextName)); unregisterAllMatching(search, mbs); } private static void unregisterContextSelector(final String contextName, final MBeanServer mbs) { - final String search = String.format(ContextSelectorAdminMBean.PATTERN, escape(contextName), "*"); + final String search = String.format(ContextSelectorAdminMBean.PATTERN, escape(contextName)); unregisterAllMatching(search, mbs); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormat.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormat.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormat.java index 415c835..a640aea 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormat.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormat.java @@ -306,7 +306,11 @@ public class FixedDateFormat { final TimeZone tz; if (options.length > 1) { if (options[1] != null) { - tz = TimeZone.getTimeZone(options[1]); + String zoneId = options[1]; + if (zoneId.startsWith("-") || zoneId.startsWith("+")) { + zoneId = "GMT" + zoneId; + } + tz = TimeZone.getTimeZone(zoneId); } else { tz = TimeZone.getDefault(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java index c6da0e8..82135f5 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java @@ -58,10 +58,11 @@ public class TimeFilterTest { @Test public void testTime() { - final TimeFilter filter = TimeFilter.createFilter("02:00:00", "03:00:00", "America/LosAngeles", null, null); + // https://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/ + final TimeFilter filter = TimeFilter.createFilter("02:00:00", "03:00:00", "America/Los_Angeles", null, null); filter.start(); assertTrue(filter.isStarted()); - final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/LosAngeles")); + final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles")); cal.set(Calendar.HOUR_OF_DAY, 2); CLOCKTIME = cal.getTimeInMillis(); LogEvent event = Log4jLogEvent.newBuilder().setTimeMillis(CLOCKTIME).build(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ResourceBundleLookupTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ResourceBundleLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ResourceBundleLookupTest.java index f1aa6bf..8d563c5 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ResourceBundleLookupTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ResourceBundleLookupTest.java @@ -38,6 +38,7 @@ public class ResourceBundleLookupTest { Assert.assertEquals("ValueA", lookup.lookup("org.apache.logging.log4j.core.lookup.resource-bundle:KeyA")); } + @Test public void testMissingKey() { final StrLookup lookup = new ResourceBundleLookup(); Assert.assertNull(lookup.lookup("org.apache.logging.log4j.core.lookup.resource-bundle:KeyUnkown")); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FastDateParserTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FastDateParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FastDateParserTest.java index 4aee15d..139bb1c 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FastDateParserTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FastDateParserTest.java @@ -670,7 +670,7 @@ public class FastDateParserTest { @Test public void testLang1121() throws ParseException { - final TimeZone kst = TimeZone.getTimeZone("KST"); + final TimeZone kst = TimeZone.getTimeZone("Asia/Seoul"); final DateParser fdp = getInstance("yyyyMMdd", kst, Locale.KOREA); try { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormatTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormatTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormatTest.java index c254ca1..575ab7c 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormatTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/time/internal/format/FixedDateFormatTest.java @@ -132,7 +132,7 @@ public class FixedDateFormatTest { public void testCreateIfSupported_customTimeZoneIfOptionsArrayWithTimeZoneElement() { final FixedDateFormat fmt = FixedDateFormat.createIfSupported(new String[] {DEFAULT.getPattern(), "+08:00", ""}); assertEquals(DEFAULT.getPattern(), fmt.getFormat()); - assertEquals(TimeZone.getTimeZone("+08:00"), fmt.getTimeZone()); + assertEquals(TimeZone.getTimeZone("GMT+08:00"), fmt.getTimeZone()); } @Test(expected = NullPointerException.class) http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-csv/src/test/java/org/apache/logging/log4j/csv/appender/CsvJsonParameterLayoutFileAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-csv/src/test/java/org/apache/logging/log4j/csv/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-csv/src/test/java/org/apache/logging/log4j/csv/appender/CsvJsonParameterLayoutFileAppenderTest.java index 8f87162..8b9e769 100644 --- a/log4j-csv/src/test/java/org/apache/logging/log4j/csv/appender/CsvJsonParameterLayoutFileAppenderTest.java +++ b/log4j-csv/src/test/java/org/apache/logging/log4j/csv/appender/CsvJsonParameterLayoutFileAppenderTest.java @@ -104,6 +104,7 @@ public class CsvJsonParameterLayoutFileAppenderTest { testNoNulCharacters("[", "["); } + @Test public void testNoNulCharactersThreeChars() throws IOException { testNoNulCharacters("ABC", "ABC"); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java index 035eea6..e179b0c 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java @@ -56,6 +56,7 @@ import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import com.google.common.base.Preconditions; @@ -194,8 +195,9 @@ public class FlumeEmbeddedAppenderTest { " Received: " + body, body.endsWith(expected)); } } - /* Flume 1.4.0 does not support interceptors on the embedded agent - @Test */ + /* Flume 1.4.0 does not support interceptors on the embedded agent */ + @Test + @Ignore public void testHeaderAddedByInterceptor() { final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test"); @@ -207,7 +209,8 @@ public class FlumeEmbeddedAppenderTest { Assert.assertEquals("local", environmentHeader); } - /* @Test */ + @Test + @Ignore public void testPerformance() throws Exception { final long start = System.currentTimeMillis(); final int count = 10000; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java index c1a38cb..8df3057 100644 --- a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java +++ b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java @@ -139,7 +139,6 @@ public class KafkaAppenderTest { final ProducerRecord<byte[], byte[]> item = history.get(0); assertNotNull(item); assertEquals(TOPIC_NAME, item.topic()); - String msgKey = item.key().toString(); byte[] keyValue = "key".getBytes(StandardCharsets.UTF_8); assertArrayEquals(item.key(), keyValue); assertEquals(LOG_MESSAGE, new String(item.value(), StandardCharsets.UTF_8)); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/log4j-perf/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-perf/pom.xml b/log4j-perf/pom.xml index 3fb9af9..4316d40 100644 --- a/log4j-perf/pom.xml +++ b/log4j-perf/pom.xml @@ -178,6 +178,8 @@ <compilerVersion>9</compilerVersion> <source>9</source> <target>9</target> + <!-- disable errorprone --> + <compilerId>javac</compilerId> </configuration> </plugin> <plugin> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index d8b8675..d3db404 100644 --- a/pom.xml +++ b/pom.xml @@ -214,6 +214,8 @@ <!-- Maven site depends on Velocity and the escaping rules are different in newer versions. --> <!-- See https://maven.apache.org/plugins/maven-site-plugin/migrate.html --> <velocity.plugin.version>1.5</velocity.plugin.version> + <errorprone.version>2.2.0</errorprone.version> + <plexus.errorprone.version>2.8.3</plexus.errorprone.version> <remote.resources.plugin.version>1.5</remote.resources.plugin.version> <manifestfile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestfile> <maven.compiler.source>1.8</maven.compiler.source> @@ -903,7 +905,21 @@ <Xmaxwarns>10000</Xmaxwarns> <Xlint /> </compilerArguments> + <compilerId>javac-with-errorprone</compilerId> + <forceJavacCompilerUse>true</forceJavacCompilerUse> </configuration> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-compiler-javac-errorprone</artifactId> + <version>${plexus.errorprone.version}</version> + </dependency> + <dependency> + <groupId>com.google.errorprone</groupId> + <artifactId>error_prone_core</artifactId> + <version>${errorprone.version}</version> + </dependency> + </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74df59c5/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index f519ca3..f172b52 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -115,6 +115,9 @@ <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> </release> <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">