LOG4J2-2898: Avoid initializing volatile fields with default values (#367)
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 @@
*/
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 @@
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 @@
*/
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
* 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 @@
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 @@
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 @@
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 @@
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 @@
};
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 @@
*/
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;