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/04/08 12:54:39 UTC

[3/5] logging-log4j2 git commit: LOG4J2-1343 do not synchronize on the appender Manager while converting the LogEvent to text: this may result in deadlocks

LOG4J2-1343 do not synchronize on the appender Manager while converting the LogEvent to text: this may result in deadlocks


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

Branch: refs/heads/master
Commit: 794af49a6f1ec1970c605bca04a38251684ab262
Parents: acf8e34
Author: rpopma <rp...@apache.org>
Authored: Fri Apr 8 19:50:31 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Apr 8 19:50:31 2016 +0900

----------------------------------------------------------------------
 .../core/appender/AbstractOutputStreamAppender.java   | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/794af49a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
index dcd0556..85faf43 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
@@ -122,14 +122,12 @@ public abstract class AbstractOutputStreamAppender<M extends OutputStreamManager
     }
 
     protected void directEncodeEvent(final LogEvent event) {
-        synchronized (manager) {
-            getLayout().encode(event, manager.getByteBufferDestination());
-            if (!manager.isBufferedIO()) { // buffering was not requested by the user
-                manager.flushBuffer(); // we're not allowed to leave anything in the buffer: drain buffer into manager
-            }
-            if (this.immediateFlush || event.isEndOfBatch()) {
-                manager.flush();
-            }
+        getLayout().encode(event, manager.getByteBufferDestination());
+        if (!manager.isBufferedIO()) { // buffering was not requested by the user
+            manager.flushBuffer(); // we're not allowed to leave anything in the buffer: drain buffer into manager
+        }
+        if (this.immediateFlush || event.isEndOfBatch()) {
+            manager.flush();
         }
     }