You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/03/24 17:27:01 UTC

logging-log4j2 git commit: LOG4J2-639 fix to handle context.stop() correctly when using the tryPublish API

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 29a4e87d1 -> d90306fc4


LOG4J2-639 fix to handle context.stop() correctly when using the tryPublish API


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d90306fc
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d90306fc
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d90306fc

Branch: refs/heads/master
Commit: d90306fc46543b9340ddfb96aa5a6eb4b1a3a9eb
Parents: 29a4e87
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 25 01:27:03 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 25 01:27:03 2016 +0900

----------------------------------------------------------------------
 .../logging/log4j/core/async/AsyncLoggerDisruptor.java       | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d90306fc/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDisruptor.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDisruptor.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDisruptor.java
index cb78ce6..1e1cd1e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDisruptor.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDisruptor.java
@@ -186,7 +186,13 @@ class AsyncLoggerDisruptor {
     }
 
     public boolean tryPublish(final RingBufferLogEventTranslator translator) {
-        return disruptor.getRingBuffer().tryPublishEvent(translator);
+        // LOG4J2-639: catch NPE if disruptor field was set to null in stop()
+        try {
+            return disruptor.getRingBuffer().tryPublishEvent(translator);
+        } catch (final NullPointerException npe) {
+            LOGGER.warn("[{}] Ignoring log event after log4j was shut down.", contextName);
+            return false;
+        }
     }
 
     void enqueueLogMessageInfo(final RingBufferLogEventTranslator translator) {