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 2014/04/20 10:56:29 UTC

svn commit: r1588731 - /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java

Author: rpopma
Date: Sun Apr 20 08:56:29 2014
New Revision: 1588731

URL: http://svn.apache.org/r1588731
Log:
renamed constant, have more but shorter sleeps between buffer checks to reduce unnecessary waits, improved comments

Modified:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java?rev=1588731&r1=1588730&r2=1588731&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java Sun Apr 20 08:56:29 2014
@@ -73,8 +73,8 @@ import org.apache.logging.log4j.status.S
  */
 public class AsyncLogger extends Logger {
     private static final long serialVersionUID = 1L;
-    private static final int HALF_A_SECOND = 500;
-    private static final int MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN = 20;
+    private static final int SLEEP_MILLIS_BETWEEN_DRAIN_ATTEMPTS = 50;
+    private static final int MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN = 200;
     private static final int RINGBUFFER_MIN_SIZE = 128;
     private static final int RINGBUFFER_DEFAULT_SIZE = 256 * 1024;
     private static final StatusLogger LOGGER = StatusLogger.getLogger();
@@ -292,16 +292,17 @@ public class AsyncLogger extends Logger 
         }
         temp.shutdown();
 
-        // wait up to 10 seconds for the ringbuffer to drain
+        // Wait up to 10 seconds for the ringbuffer to drain,
+        // in case we received a burst of events right before the application was stopped.
         final RingBuffer<RingBufferLogEvent> ringBuffer = temp.getRingBuffer();
         for (int i = 0; i < MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN; i++) {
             if (ringBuffer.hasAvailableCapacity(ringBuffer.getBufferSize())) {
-                break;
+                break; // no more events queued, we can safely kill the processor thread
             }
             try {
                 // give ringbuffer some time to drain...
-                //noinspection BusyWait
-                Thread.sleep(HALF_A_SECOND);
+                // noinspection BusyWait
+                Thread.sleep(SLEEP_MILLIS_BETWEEN_DRAIN_ATTEMPTS);
             } catch (final InterruptedException e) {
                 // ignored
             }