Repository: logging-log4j2
Updated Branches:
  refs/heads/feature/LOG4J2-1430 aad08e764 -> 059df7f57


Use TransferQueue::tryTransfer() when available in AsyncAppender


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

Branch: refs/heads/feature/LOG4J2-1430
Commit: 059df7f57ec84b4a5b062616138aedd83cd626bb
Parents: aad08e7
Author: Matt Sicker <boa...@gmail.com>
Authored: Sat Jun 18 14:01:49 2016 -0500
Committer: Matt Sicker <boa...@gmail.com>
Committed: Sat Jun 18 14:01:49 2016 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/core/appender/AsyncAppender.java   | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/059df7f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
----------------------------------------------------------------------
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 f7aa381..200a5b4 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
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TransferQueue;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.logging.log4j.core.AbstractLogEvent;
@@ -151,7 +152,7 @@ public final class AsyncAppender extends AbstractAppender {
             logEvent.getMessage().getFormattedMessage(); // LOG4J2-763: ask 
message to freeze parameters
         }
         final Log4jLogEvent memento = Log4jLogEvent.createMemento(logEvent, 
includeLocation);
-        if (!queue.offer(memento)) {
+        if (!transfer(memento)) {
             if (blocking) {
                 // delegate to the event router (which may discard, enqueue 
and block, or log in current thread)
                 final EventRoute route = 
asyncQueueFullPolicy.getRoute(thread.getId(), memento.getLevel());
@@ -163,6 +164,12 @@ public final class AsyncAppender extends AbstractAppender {
         }
     }
 
+    private boolean transfer(final LogEvent memento) {
+        return queue instanceof TransferQueue
+            ? ((TransferQueue<LogEvent>) queue).tryTransfer(memento)
+            : queue.offer(memento);
+    }
+
     /**
      * FOR INTERNAL USE ONLY.
      *

Reply via email to