Propagate and use timeout values from Configurator.shutdown(LoggerContext,long,TimeUnit).
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9ba97f2f Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9ba97f2f Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9ba97f2f Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext Commit: 9ba97f2fbfafbfb17747152cfdb94f05237fa553 Parents: 433b845 Author: Gary Gregory <ggreg...@apache.org> Authored: Tue Sep 6 02:38:16 2016 -0400 Committer: Gary Gregory <ggreg...@apache.org> Committed: Tue Sep 6 02:38:16 2016 -0400 ---------------------------------------------------------------------- .../org/apache/logging/log4j/core/AbstractLifeCycle.java | 6 ++++-- .../java/org/apache/logging/log4j/core/LoggerContext.java | 2 +- .../log4j/core/appender/routing/RoutingAppender.java | 2 +- .../logging/log4j/core/async/AsyncLoggerContext.java | 3 ++- .../logging/log4j/core/config/AbstractConfiguration.java | 10 +++++----- .../logging/log4j/core/filter/AbstractFilterable.java | 4 ++-- .../apache/logging/log4j/core/filter/CompositeFilter.java | 2 +- .../apache/logging/log4j/core/net/server/JmsServer.java | 3 ++- .../log4j/core/util/DefaultShutdownCallbackRegistry.java | 3 ++- .../org/apache/logging/log4j/junit/LoggerContextRule.java | 8 +++++--- .../apache/logging/log4j/web/Log4jWebInitializerImpl.java | 2 +- 11 files changed, 26 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java index 8c3c883..3fb15bf 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java @@ -16,7 +16,6 @@ */ package org.apache.logging.log4j.core; -import java.util.Objects; import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.status.StatusLogger; @@ -29,6 +28,9 @@ import org.apache.logging.log4j.status.StatusLogger; */ public class AbstractLifeCycle implements LifeCycle { + public static final int DEFAULT_STOP_TIMEOUT = -1; + public static final TimeUnit DEFAULT_STOP_TIMEUNIT = TimeUnit.MILLISECONDS; + /** * Allow subclasses access to the status logger without creating another instance. */ @@ -121,7 +123,7 @@ public class AbstractLifeCycle implements LifeCycle { @Override public void stop() { - stop(-1, TimeUnit.MILLISECONDS); + stop(DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT); } @Override http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java ---------------------------------------------------------------------- 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 3fc7fb4..8575f01 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 @@ -325,7 +325,7 @@ public class LoggerContext extends AbstractLifeCycle final Configuration prev = configuration; configuration = NULL_CONFIGURATION; updateLoggers(); - prev.stop(); + prev.stop(timeout, timeUnit); externalContext = null; LogManager.getFactory().removeContext(this); final String source = "LoggerContext \'" + getName() + "\'"; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java ---------------------------------------------------------------------- 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 1909963..fbe431e 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 @@ -103,7 +103,7 @@ public final class RoutingAppender extends AbstractAppender { for (final Map.Entry<String, AppenderControl> entry : appenders.entrySet()) { final String name = entry.getValue().getAppender().getName(); if (!map.containsKey(name)) { - entry.getValue().getAppender().stop(); + entry.getValue().getAppender().stop(timeout, timeUnit); } } setStopped(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java index 326faf3..68326f7 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java @@ -101,7 +101,8 @@ public class AsyncLoggerContext extends LoggerContext { @Override public boolean stop(final long timeout, final TimeUnit timeUnit) { setStopping(); - loggerDisruptor.stop(); // first stop Disruptor + // first stop Disruptor + loggerDisruptor.stop(timeout, timeUnit); super.stop(timeout, timeUnit); return true; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java index b165366..7a13bac 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java @@ -306,17 +306,17 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement if (!loggerConfigs.isEmpty()) { LOGGER.trace("{} stopping {} LoggerConfigs.", cls, loggerConfigs.size()); for (final LoggerConfig logger : loggerConfigs.values()) { - logger.stop(); + logger.stop(timeout, timeUnit); } } LOGGER.trace("{} stopping root LoggerConfig.", cls); if (!root.isStopped()) { - root.stop(); + root.stop(timeout, timeUnit); } if (hasAsyncLoggers()) { LOGGER.trace("{} stopping AsyncLoggerConfigDisruptor.", cls); - asyncLoggerConfigDisruptor.stop(); + asyncLoggerConfigDisruptor.stop(timeout, timeUnit); } // Stop the appenders in reverse order in case they still have activity. @@ -326,7 +326,7 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement // LOG4J2-511, LOG4J2-392 stop AsyncAppenders first LOGGER.trace("{} stopping {} AsyncAppenders.", cls, async.size()); for (final Appender appender : async) { - appender.stop(); + appender.stop(timeout, timeUnit); } } @@ -340,7 +340,7 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement int appenderCount = 0; for (int i = array.length - 1; i >= 0; --i) { if (array[i].isStarted()) { // then stop remaining Appenders - array[i].stop(); + array[i].stop(timeout, timeUnit); appenderCount++; } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java index e12067e..81b8ea9 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java @@ -148,7 +148,7 @@ public abstract class AbstractFilterable extends AbstractLifeCycle implements Fi public boolean stop(final long timeout, final TimeUnit timeUnit) { this.setStopping(); if (filter != null) { - filter.stop(); + filter.stop(timeout, timeUnit); } this.setStopped(); return true; @@ -162,7 +162,7 @@ public abstract class AbstractFilterable extends AbstractLifeCycle implements Fi this.setStopping(); } if (filter != null) { - filter.stop(); + filter.stop(timeout, timeUnit); } if (changeLifeCycleState) { this.setStopped(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java index a539418..300fd80 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java @@ -136,7 +136,7 @@ public final class CompositeFilter extends AbstractLifeCycle implements Iterable public boolean stop(final long timeout, final TimeUnit timeUnit) { this.setStopping(); for (final Filter filter : filters) { - filter.stop(); + filter.stop(timeout, timeUnit); } setStopped(); return true; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java index 0341461..887bcc5 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java @@ -30,6 +30,7 @@ import javax.jms.MessageListener; import javax.jms.ObjectMessage; import org.apache.logging.log4j.LoggingException; +import org.apache.logging.log4j.core.AbstractLifeCycle; import org.apache.logging.log4j.core.LifeCycle; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LogEventListener; @@ -99,7 +100,7 @@ public class JmsServer extends LogEventListener implements MessageListener, Life @Override public void stop() { - stop(-1, TimeUnit.MILLISECONDS); + stop(AbstractLifeCycle.DEFAULT_STOP_TIMEOUT, AbstractLifeCycle.DEFAULT_STOP_TIMEUNIT); } @Override http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java index 611abdc..ac822ee 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java @@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.AbstractLifeCycle; import org.apache.logging.log4j.core.LifeCycle; import org.apache.logging.log4j.status.StatusLogger; @@ -152,7 +153,7 @@ public class DefaultShutdownCallbackRegistry implements ShutdownCallbackRegistry @Override public void stop() { - stop(-1, TimeUnit.MILLISECONDS); + stop(AbstractLifeCycle.DEFAULT_STOP_TIMEOUT, AbstractLifeCycle.DEFAULT_STOP_TIMEUNIT); } /** http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java index aa866f5..25a7a02 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java @@ -19,6 +19,7 @@ package org.apache.logging.log4j.junit; import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.AbstractLifeCycle; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.LoggerContext; @@ -53,8 +54,8 @@ public class LoggerContextRule implements TestRule { private LoggerContext loggerContext; private Class<? extends ContextSelector> contextSelectorClass; private String testClassName; - private long shutdownTimeout; - private TimeUnit shutdownTimeUnit; + private final long shutdownTimeout; + private final TimeUnit shutdownTimeUnit; /** * Constructs a new LoggerContextRule without a configuration file. @@ -82,7 +83,8 @@ public class LoggerContextRule implements TestRule { * custom ContextSelector class to use instead of default */ public LoggerContextRule(final String configLocation, final Class<? extends ContextSelector> contextSelectorClass) { - this(configLocation, contextSelectorClass, 0, null); + this(configLocation, contextSelectorClass, AbstractLifeCycle.DEFAULT_STOP_TIMEOUT, + AbstractLifeCycle.DEFAULT_STOP_TIMEUNIT); } public LoggerContextRule(final String configLocation, final Class<? extends ContextSelector> contextSelectorClass, http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ba97f2f/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java ---------------------------------------------------------------------- diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java index 287e253..6efa69a 100644 --- a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java +++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java @@ -229,7 +229,7 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe if (this.namedContextSelector != null) { this.namedContextSelector.removeContext(this.name); } - this.loggerContext.stop(); + this.loggerContext.stop(timeout, timeUnit); this.loggerContext.setExternalContext(null); this.loggerContext = null; }