You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by rg...@apache.org on 2011/05/20 05:27:53 UTC

svn commit: r1125218 - /logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java

Author: rgoers
Date: Fri May 20 03:27:52 2011
New Revision: 1125218

URL: http://svn.apache.org/viewvc?rev=1125218&view=rev
Log:
Use a Semaphore instead of a Queue

Modified:
    logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java

Modified: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java?rev=1125218&r1=1125217&r2=1125218&view=diff
==============================================================================
--- logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java (original)
+++ logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java Fri May 20 03:27:52 2011
@@ -31,6 +31,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -46,7 +47,7 @@ public class RollingFileManager extends 
     private long size;
     private long initialTime;
     private PatternProcessor processor;
-    private ArrayBlockingQueue<RollingFileManager> queue = new ArrayBlockingQueue<RollingFileManager>(1);
+    private final Semaphore semaphore = new Semaphore(1);
     private static int count = 0;
 
     private static ManagerFactory factory = new RollingFileManagerFactory();
@@ -63,7 +64,6 @@ public class RollingFileManager extends 
         this.size = size;
         this.initialTime = time;
         processor = new PatternProcessor(pattern);
-        queue.add(this);
     }
 
 
@@ -102,12 +102,8 @@ public class RollingFileManager extends 
     private boolean rollover(RolloverStrategy strategy) {
 
         try {
-            /* Block until the asynchronous operation is completed.
-             */
-            if (queue.take() == null) {
-                logger.error("Unable to acquire lock for rollover");
-                return false;
-            }
+            // Block until the asynchronous operation is completed.
+            semaphore.acquire();
         } catch (InterruptedException ie) {
             logger.error("Thread interrupted while attempting to check rollover", ie);
             return false;
@@ -138,8 +134,8 @@ public class RollingFileManager extends 
                     }
                 }
             } finally {
-                if (!success && queue.size() == 0) {
-                    queue.add(this);
+                if (!success && semaphore.availablePermits() == 0) {
+                    semaphore.release();
                 }
             }
             return true;
@@ -169,7 +165,7 @@ public class RollingFileManager extends 
             try {
                 return action.execute();
             } finally {
-                this.manager.queue.add(manager);
+                manager.semaphore.release();
             }
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org