[logging-log4j2] branch release-2.x updated: LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, especially when used with the SizeBasedTriggeringPolicy

2019-02-01 Thread rgoers
This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
 new bde8e23  LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, 
especially when used with the SizeBasedTriggeringPolicy
bde8e23 is described below

commit bde8e23f8adfa114de676b84576e67d9f22f09b5
Author: Ralph Goers 
AuthorDate: Fri Feb 1 23:51:33 2019 -0700

LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, especially 
when used with the SizeBasedTriggeringPolicy
---
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 071b1df..ee56be5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,6 +31,9 @@
  - "remove" - Removed
 -->
 
+  
+CronTriggeringPolicy was not rolling properly, especially when used 
with the SizeBasedTriggeringPolicy.
+  
   
 Load PropertySources from any accessible ClassLoader. Hide any 
exceptions that may occur accessing a PropertySource.
   



[logging-log4j2] branch release-2.x updated: LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, especially when used with the SizeBasedTriggeringPolicy

2019-02-01 Thread rgoers
This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
 new 42fe68e  LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, 
especially when used with the SizeBasedTriggeringPolicy
42fe68e is described below

commit 42fe68e4394c6fe335f15f9b7320aed83cc0142d
Author: Ralph Goers 
AuthorDate: Fri Feb 1 23:44:23 2019 -0700

LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, especially 
when used with the SizeBasedTriggeringPolicy
---
 .../appender/rolling/CronTriggeringPolicy.java |  5 +-
 .../appender/rolling/DefaultRolloverStrategy.java  |  6 +-
 .../core/appender/rolling/PatternProcessor.java|  4 +-
 .../core/appender/rolling/RollingFileManager.java  |  7 ++
 ...st.java => RollingAppenderCronAndSizeTest.java} | 79 +++---
 .../rolling/RollingAppenderTimeAndSizeTest.java| 45 +---
 ...olling3.xml => log4j-rolling-cron-and-size.xml} | 25 ---
 log4j-core/src/test/resources/log4j-rolling3.xml   |  8 +--
 src/site/xdoc/manual/appenders.xml | 10 ++-
 9 files changed, 131 insertions(+), 58 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
index 060e7fa..14997e1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
@@ -145,10 +145,7 @@ public final class CronTriggeringPolicy extends 
AbstractTriggeringPolicy {
 }
 
 private void rollover() {
-manager.getPatternProcessor().setPrevFileTime(lastRollDate.getTime());
-final Date thisRoll = cronExpression.getPrevFireTime(new Date());
-manager.getPatternProcessor().setCurrentFileTime(thisRoll.getTime());
-manager.rollover();
+   manager.rollover(cronExpression.getPrevFireTime(new Date()), 
lastRollDate);
 if (future != null) {
 lastRollDate = future.getFireTime();
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index 335018e..6dff555 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -517,9 +517,11 @@ public class DefaultRolloverStrategy extends 
AbstractRolloverStrategy {
 @Override
 public RolloverDescription rollover(final RollingFileManager manager) 
throws SecurityException {
 int fileIndex;
+   final StringBuilder buf = new StringBuilder(255);
 if (minIndex == Integer.MIN_VALUE) {
 final SortedMap eligibleFiles = 
getEligibleFiles(manager);
 fileIndex = eligibleFiles.size() > 0 ? eligibleFiles.lastKey() + 1 
: 1;
+   
manager.getPatternProcessor().formatFileName(strSubstitutor, buf, fileIndex);
 } else {
 if (maxIndex < 0) {
 return null;
@@ -529,13 +531,13 @@ public class DefaultRolloverStrategy extends 
AbstractRolloverStrategy {
 if (fileIndex < 0) {
 return null;
 }
+   
manager.getPatternProcessor().formatFileName(strSubstitutor, buf, fileIndex);
 if (LOGGER.isTraceEnabled()) {
 final double durationMillis = 
TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos);
 LOGGER.trace("DefaultRolloverStrategy.purge() took {} 
milliseconds", durationMillis);
 }
 }
-final StringBuilder buf = new StringBuilder(255);
-manager.getPatternProcessor().formatFileName(strSubstitutor, buf, 
fileIndex);
+
 final String currentFileName = manager.getFileName();
 
 String renameTo = buf.toString();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
index f1231fd..6d1fb7e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
@@ -213,7 +213,9 @@ public class PatternProcessor {
 }
 
 public void updateTime() {
-prevFileTime = nextFileTime;
+   if (nextFileTime != 0) {
+   prevFileTime = nextFileTime;
+   }
 }
 
 private