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 2013/07/17 23:59:28 UTC

svn commit: r1504297 - in /logging/log4j/log4j2/trunk: core/src/main/java/org/apache/logging/log4j/core/appender/ core/src/main/java/org/apache/logging/log4j/core/appender/rolling/ src/changes/

Author: rpopma
Date: Wed Jul 17 21:59:28 2013
New Revision: 1504297

URL: http://svn.apache.org/r1504297
Log:
LOG4J2-311: fixes thread-safe issue in manager classes: access to buffer/stream must be in synchronized block or method

Modified:
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java?rev=1504297&r1=1504296&r2=1504297&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java Wed Jul 17 21:59:28 2013
@@ -104,7 +104,7 @@ public class FastFileManager extends Out
     }
 
     @Override
-    public void flush() {
+    public synchronized void flush() {
         buffer.flip();
         try {
             randomAccessFile.write(buffer.array(), 0, buffer.limit());
@@ -116,7 +116,7 @@ public class FastFileManager extends Out
     }
 
     @Override
-    public void close() {
+    public synchronized void close() {
         flush();
         try {
             randomAccessFile.close();

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java?rev=1504297&r1=1504296&r2=1504297&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java Wed Jul 17 21:59:28 2013
@@ -129,7 +129,7 @@ public class OutputStreamManager extends
         write(bytes, 0, bytes.length);
     }
 
-    protected void close() {
+    protected synchronized void close() {
         final OutputStream stream = os; // access volatile field only once per method
         if (stream == System.out || stream == System.err) {
             return;
@@ -144,7 +144,7 @@ public class OutputStreamManager extends
     /**
      * Flush any buffers.
      */
-    public void flush() {
+    public synchronized void flush() {
         try {
             os.flush();
         } catch (final IOException ex) {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java?rev=1504297&r1=1504296&r2=1504297&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java Wed Jul 17 21:59:28 2013
@@ -99,7 +99,7 @@ public class FastRollingFileManager exte
     }
 
     @Override
-    public void flush() {
+    public synchronized void flush() {
         buffer.flip();
         try {
             randomAccessFile.write(buffer.array(), 0, buffer.limit());
@@ -111,7 +111,7 @@ public class FastRollingFileManager exte
     }
 
     @Override
-    public void close() {
+    public synchronized void close() {
         flush();
         try {
             randomAccessFile.close();

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1504297&r1=1504296&r2=1504297&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Jul 17 21:59:28 2013
@@ -21,6 +21,9 @@
   </properties>
   <body>
     <release version="2.0-beta9" date="soon, very soon" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-311" dev="rpopma" type="fix">
+        Synchronized flush() and close() methods in the XxxFileManager and OutputStreamManager classes.
+      </action>
       <action issue="LOG4J2-312" dev="ggregory" type="update">
         XML layout improvements (compact vs. pretty, namespace, namespace prefix, root element).
       </action>