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:05:19 UTC
[logging-log4j2] 01/02: 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 release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 298741f8ab398d560bd894901a961b305e8017cd
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/db/jdbc/JdbcDatabaseManager.java | 2 +-
.../java/org/apache/logging/log4j/core/appender/mom/JmsManager.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 +-
.../main/java/org/apache/logging/log4j/core/util/WatcherFactory.java | 2 +-
.../org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java | 4 ++--
.../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 +-
.../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 b910c5c..cdbe1d5 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
@@ -27,7 +27,7 @@ import org.apache.logging.log4j.status.StatusLogger;
*/
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 a7e5b60..894254d 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
@@ -89,7 +89,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 55dc99a..0779ab3 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
@@ -379,7 +379,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 14ee729..a98ebd7 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
@@ -60,7 +60,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/db/jdbc/JdbcDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
index 0bdb76b..2a4018f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
@@ -162,7 +162,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-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java
index ad57358..959f468 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/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-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 6597de6..1645f74 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
@@ -67,8 +67,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 b33723a..f639777 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
@@ -435,7 +435,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 d376df3..43c1ed1 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 44dab54..fdafe88 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
@@ -61,7 +61,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 c02b324..5b7cbf9 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
@@ -34,7 +34,7 @@ import org.apache.logging.log4j.util.Supplier;
public class LockingReliabilityStrategy implements ReliabilityStrategy, LocationAwareReliabilityStrategy {
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 413c186..813a358 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
@@ -46,7 +46,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/util/WatcherFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatcherFactory.java
index 7671353..f6e6002 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 Logger LOGGER = StatusLogger.getLogger();
private static 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-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index ddb3b83..54c3153 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -388,8 +388,8 @@ public class FixedDateFormat {
private final int millisSeparatorLength;
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-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 d99cbf7..c4e18ac 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 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 a5ef5d5..110630b 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 76f9165..f2d8758 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-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 3eb207f..6ec0992 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 df5d494..6cb0732 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 74e76f7..99145f4 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;