Author: rgoers
Date: Mon May 12 06:22:54 2014
New Revision: 1593892
URL: http://svn.apache.org/r1593892
Log:
LOG4J2-469 - FailoverAppender was not resetting its status after the primary
appender recovered.
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java?rev=1593892&r1=1593891&r2=1593892&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
Mon May 12 06:22:54 2014
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.ap
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.logging.log4j.LoggingException;
import org.apache.logging.log4j.core.Appender;
@@ -56,9 +57,7 @@ public final class FailoverAppender exte
private final long intervalMillis;
- private long nextCheckMillis = 0;
-
- private volatile boolean failure = false;
+ private volatile long nextCheckMillis = 0;
private FailoverAppender(final String name, final Filter filter, final
String primary, final String[] failovers,
final int intervalMillis, final Configuration
config, final boolean ignoreExceptions) {
@@ -106,24 +105,20 @@ public final class FailoverAppender exte
error("FailoverAppender " + getName() + " did not start
successfully");
return;
}
- if (!failure) {
+ long localCheckMillis = nextCheckMillis;
+ if (localCheckMillis == 0 || System.currentTimeMillis() >
localCheckMillis) {
callAppender(event);
} else {
- final long currentMillis = System.currentTimeMillis();
- if (currentMillis >= nextCheckMillis) {
- callAppender(event);
- } else {
- failover(event, null);
- }
+ failover(event, null);
}
}
private void callAppender(final LogEvent event) {
try {
primary.callAppender(event);
+ nextCheckMillis = 0;
} catch (final Exception ex) {
nextCheckMillis = System.currentTimeMillis() + intervalMillis;
- failure = true;
failover(event, ex);
}
}
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java?rev=1593892&r1=1593891&r2=1593892&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
Mon May 12 06:22:54 2014
@@ -76,9 +76,10 @@ public class FailoverAppenderTest {
app.clear();
Thread.sleep(1100);
onceLogger.error("Fail after recovery interval");
+ onceLogger.error("Second log message");
events = app.getEvents();
assertEquals("Did not recover", events.size(), 0);
events = foApp.getEvents();
- assertEquals("No events in primary appender", events.size(), 1);
+ assertEquals("Incorrect number of events in primary appender",
events.size(), 2);
}
}
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1593892&r1=1593891&r2=1593892&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Mon May 12 06:22:54 2014
@@ -22,6 +22,9 @@
</properties>
<body>
<release version="2.0-rc2" date="2014-MM-DD" description="Bug fixes and
enhancements">
+ <action issue="LOG4J2-469" dev="rgoers" type="fix">
+ FailoverAppender was not resetting its status after the primary
appender recovered.
+ </action>
<action issue="LOG4J2-623" dev="rgoers" type="fix">
Generate MDC properties as a JSON map in JSONLayout.
</action>