You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ck...@apache.org on 2020/07/18 16:00:30 UTC

[logging-log4j2] branch master updated: LOG4J2-2898: Avoid initializing volatile fields with default values (#367)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 60a73f6  LOG4J2-2898: Avoid initializing volatile fields with default values (#367)
60a73f6 is described below

commit 60a73f6f6cc6f478471e773119691822a427fc56
Author: Turbanov Andrey <tu...@gmail.com>
AuthorDate: Sat Jul 18 19:00:19 2020 +0300

    LOG4J2-2898: Avoid initializing volatile fields with default values (#367)
---
 .../src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java | 2 +-
 .../src/main/java/org/apache/logging/log4j/core/LoggerContext.java    | 2 +-
 .../java/org/apache/logging/log4j/core/appender/AsyncAppender.java    | 2 +-
 .../java/org/apache/logging/log4j/core/appender/FailoverAppender.java | 2 +-
 .../logging/log4j/core/appender/rolling/RollingFileManager.java       | 4 ++--
 .../apache/logging/log4j/core/appender/routing/RoutingAppender.java   | 2 +-
 .../apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java   | 2 +-
 .../org/apache/logging/log4j/core/config/ConfigurationFactory.java    | 4 ++--
 .../org/apache/logging/log4j/core/config/ConfigurationSource.java     | 2 +-
 .../apache/logging/log4j/core/config/LockingReliabilityStrategy.java  | 2 +-
 .../apache/logging/log4j/core/config/status/StatusConfiguration.java  | 2 +-
 .../logging/log4j/core/time/internal/format/FixedDateFormat.java      | 4 ++--
 .../main/java/org/apache/logging/log4j/core/util/WatcherFactory.java  | 2 +-
 .../java/org/apache/logging/log4j/flume/appender/FlumeAppender.java   | 2 +-
 .../org/apache/logging/log4j/flume/appender/FlumeAvroManager.java     | 2 +-
 .../apache/logging/log4j/flume/appender/FlumePersistentManager.java   | 2 +-
 .../org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java   | 2 +-
 .../main/java/org/apache/logging/log4j/jms/appender/JmsManager.java   | 2 +-
 .../main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java  | 2 +-
 .../java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java | 2 +-
 .../java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java   | 4 ++--
 .../java/org/apache/logging/log4j/samples/app/LoggingController.java  | 2 +-
 22 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
index d4c0c64..3d51f1d 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
@@ -26,7 +26,7 @@ import java.util.Stack;
  */
 public final class StackLocatorUtil {
     private static StackLocator stackLocator = null;
-    private static volatile boolean errorLogged = false;
+    private static volatile boolean errorLogged;
 
     static {
         stackLocator = StackLocator.getInstance();
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 0efea61..8b369fe 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -88,7 +88,7 @@ public class LoggerContext extends AbstractLifeCycle
 
     private final LoggerRegistry<Logger> loggerRegistry = new LoggerRegistry<>();
     private final CopyOnWriteArrayList<PropertyChangeListener> propertyChangeListeners = new CopyOnWriteArrayList<>();
-    private volatile List<LoggerContextShutdownAware> listeners = null;
+    private volatile List<LoggerContextShutdownAware> listeners;
 
     /**
      * The Configuration is volatile to guarantee that initialization of the Configuration has completed before the
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index 0ea5ae6..d4a270b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -342,7 +342,7 @@ public final class AsyncAppender extends AbstractAppender {
      */
     private class AsyncThread extends Log4jThread {
 
-        private volatile boolean shutdown = false;
+        private volatile boolean shutdown;
         private final List<AppenderControl> appenders;
         private final BlockingQueue<LogEvent> queue;
 
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
index 7cab755..72bf446 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
@@ -61,7 +61,7 @@ public final class FailoverAppender extends AbstractAppender {
 
     private final long intervalNanos;
 
-    private volatile long nextCheckNanos = 0;
+    private volatile long nextCheckNanos;
 
     private FailoverAppender(final String name, final Filter filter, final String primary, final String[] failovers,
             final int intervalMillis, final Configuration config, final boolean ignoreExceptions,
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 129b9a6..e95dc85 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -66,8 +66,8 @@ public class RollingFileManager extends FileManager {
     private final Log4jThreadFactory threadFactory = Log4jThreadFactory.createThreadFactory("RollingFileManager");
     private volatile TriggeringPolicy triggeringPolicy;
     private volatile RolloverStrategy rolloverStrategy;
-    private volatile boolean renameEmptyFiles = false;
-    private volatile boolean initialized = false;
+    private volatile boolean renameEmptyFiles;
+    private volatile boolean initialized;
     private volatile String fileName;
     private final boolean directWrite;
 
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 546f690..2d2e3d0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -415,7 +415,7 @@ public final class RoutingAppender extends AbstractAppender {
 
     private static final class CreatedRouteAppenderControl extends RouteAppenderControl {
 
-        private volatile boolean pendingDeletion = false;
+        private volatile boolean pendingDeletion;
         private final AtomicInteger depth = new AtomicInteger();
 
         CreatedRouteAppenderControl(Appender appender) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java
index a506619..252cd28 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java
@@ -185,7 +185,7 @@ public class AsyncLoggerConfigDisruptor extends AbstractLifeCycle implements Asy
     private long backgroundThreadId; // LOG4J2-471
     private EventFactory<Log4jEventWrapper> factory;
     private EventTranslatorTwoArg<Log4jEventWrapper, LogEvent, AsyncLoggerConfig> translator;
-    private volatile boolean alreadyLoggedWarning = false;
+    private volatile boolean alreadyLoggedWarning;
 
     private final Object queueFullEnqueueLock = new Object();
 
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
index 2db7a2d..7112f56 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
@@ -138,7 +138,7 @@ public abstract class ConfigurationFactory extends ConfigurationBuilderFactory {
 
     private static final String OVERRIDE_PARAM = "override";
 
-    private static volatile List<ConfigurationFactory> factories = null;
+    private static volatile List<ConfigurationFactory> factories;
 
     private static ConfigurationFactory configFactory = new Factory();
 
@@ -149,7 +149,7 @@ public abstract class ConfigurationFactory extends ConfigurationBuilderFactory {
     private static final String HTTPS = "https";
     private static final String HTTP = "http";
 
-    private static volatile AuthorizationProvider authorizationProvider = null;
+    private static volatile AuthorizationProvider authorizationProvider;
 
     /**
      * Returns the ConfigurationFactory.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
index 087d447..ad94891 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
@@ -59,7 +59,7 @@ public class ConfigurationSource {
     private final String location;
     private final InputStream stream;
     private volatile byte[] data;
-    private volatile Source source = null;
+    private volatile Source source;
     private final long lastModified;
     // Set when the configuration has been updated so reset can use it for the next lastModified timestamp.
     private volatile long modifiedMillis;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LockingReliabilityStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LockingReliabilityStrategy.java
index 391f2ec..21e3557 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LockingReliabilityStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LockingReliabilityStrategy.java
@@ -33,7 +33,7 @@ import org.apache.logging.log4j.util.Supplier;
 public class LockingReliabilityStrategy implements ReliabilityStrategy {
     private final LoggerConfig loggerConfig;
     private final ReadWriteLock reconfigureLock = new ReentrantReadWriteLock();
-    private volatile boolean isStopping = false;
+    private volatile boolean isStopping;
 
     public LockingReliabilityStrategy(final LoggerConfig loggerConfig) {
         this.loggerConfig = Objects.requireNonNull(loggerConfig, "loggerConfig was null");
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
index 1ad67a3..6070d30 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
@@ -47,7 +47,7 @@ public class StatusConfiguration {
     private final Collection<String> errorMessages = new LinkedBlockingQueue<String>();
     private final StatusLogger logger = StatusLogger.getLogger();
 
-    private volatile boolean initialized = false;
+    private volatile boolean initialized;
 
     private PrintStream destination = DEFAULT_STREAM;
     private Level status = DEFAULT_STATUS;
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 e169ffc..4316a59 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
@@ -392,8 +392,8 @@ public class FixedDateFormat {
     private final FixedTimeZoneFormat fixedTimeZoneFormat;
 
 
-    private volatile long midnightToday = 0;
-    private volatile long midnightTomorrow = 0;
+    private volatile long midnightToday;
+    private volatile long midnightTomorrow;
     private final int[] dstOffsets = new int[25];
 
     // cachedDate does not need to be volatile because
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatcherFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatcherFactory.java
index dc88e56..31acd5a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatcherFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatcherFactory.java
@@ -39,7 +39,7 @@ public class WatcherFactory {
     private static final Logger LOGGER = StatusLogger.getLogger();
     private static final PluginManager pluginManager = new PluginManager(Watcher.CATEGORY);
 
-    private static volatile WatcherFactory factory = null;
+    private static volatile WatcherFactory factory;
 
     private final Map<String, PluginType<?>> plugins;
 
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
index a7aa460..c2e7a2e 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
@@ -63,7 +63,7 @@ public final class FlumeAppender extends AbstractAppender implements FlumeEventF
     private final FlumeEventFactory factory;
 
     private final Timer timer = new Timer("FlumeEvent", 5000);
-    private volatile long count = 0;
+    private volatile long count;
 
     /**
      * Which Manager will be used by the appender instance.
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
index ad35b38..1dac698 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
@@ -50,7 +50,7 @@ public class FlumeAvroManager extends AbstractFlumeManager {
 
     private final int current = 0;
 
-    private volatile RpcClient rpcClient = null;
+    private volatile RpcClient rpcClient;
 
     private BatchEvent batchEvent = new BatchEvent();
     private long nextSend = 0;
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
index d15101f..7a989c0 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
@@ -469,7 +469,7 @@ public class FlumePersistentManager extends FlumeAvroManager {
      * Thread that sends data to Flume and pulls it from Berkeley DB.
      */
     private static class WriterThread extends Log4jThread  {
-        private volatile boolean shutdown = false;
+        private volatile boolean shutdown;
         private final Database database;
         private final Environment environment;
         private final FlumePersistentManager manager;
diff --git a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
index 122984a..4e9239d 100644
--- a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
+++ b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
@@ -161,7 +161,7 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager {
     private final class Reconnector extends Log4jThread {
 
         private final CountDownLatch latch = new CountDownLatch(1);
-        private volatile boolean shutdown = false;
+        private volatile boolean shutdown;
 
         private Reconnector() {
             super("JdbcDatabaseManager-Reconnector");
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java b/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
index 93d27b2..1ed2ba5 100644
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
+++ b/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
@@ -141,7 +141,7 @@ public class JmsManager extends AbstractManager {
 
         private final CountDownLatch latch = new CountDownLatch(1);
 
-        private volatile boolean shutdown = false;
+        private volatile boolean shutdown;
 
         private final Object owner;
 
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java
index ff778d2..2d2ccb3 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java
@@ -152,7 +152,7 @@ public class ClocksBenchmark {
         private static volatile OldCachedClock instance;
         private static final Object INSTANCE_LOCK = new Object();
         private volatile long millis = System.currentTimeMillis();
-        private volatile short count = 0;
+        private volatile short count;
 
         private OldCachedClock() {
             final Thread updater = new Thread(new Runnable() {
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
index 0d36c21..41ef9c8 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
@@ -53,7 +53,7 @@ import org.openjdk.jmh.infra.Blackhole;
 public class LoggerConfigBenchmark {
 
     private final CopyOnWriteArraySet<AppenderControl> appenderSet = new CopyOnWriteArraySet<>();
-    private volatile Filter filter = null;
+    private volatile Filter filter;
     private final boolean additive = true;
     private final boolean includeLocation = true;
     private LoggerConfig parent;
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
index fd462c2..b82547c 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
@@ -57,8 +57,8 @@ public class TimeFormatBenchmark {
     };
     FastDateFormat fastDateFormat = FastDateFormat.getInstance("HH:mm:ss.SSS");
     FixedDateFormat fixedDateFormat = FixedDateFormat.createIfSupported(new String[]{"ABSOLUTE"});
-    volatile long midnightToday = 0;
-    volatile long midnightTomorrow = 0;
+    volatile long midnightToday;
+    volatile long midnightTomorrow;
 
     @State(Scope.Thread)
     public static class BufferState {
diff --git a/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java b/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
index e77650a..02d47b3 100755
--- a/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
+++ b/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
@@ -45,7 +45,7 @@ public class LoggingController {
      */
     private static Logger logger = LogManager.getLogger(LoggingController.class);
 
-    private volatile boolean generateLog = false;
+    private volatile boolean generateLog;
     private final Random ran = new Random();
 
     private List<AuditEvent> events;