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
}