Repository: logging-log4j2
Updated Branches:
  refs/heads/master 310d1d18e -> f8a0c9f63


LOG4J2-1653 - more code review changes


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f8a0c9f6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f8a0c9f6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f8a0c9f6

Branch: refs/heads/master
Commit: f8a0c9f63ce3f2e2875fb02fd478c3afbba50fec
Parents: 310d1d1
Author: Ralph Goers <[email protected]>
Authored: Tue Jan 3 23:15:19 2017 -0700
Committer: Ralph Goers <[email protected]>
Committed: Tue Jan 3 23:15:33 2017 -0700

----------------------------------------------------------------------
 .../appender/rolling/CronTriggeringPolicy.java  |  3 ++-
 .../appender/rolling/RollingFileManager.java    |  7 +++++-
 .../core/config/ConfigurationScheduler.java     |  6 ++++-
 .../logging/log4j/core/util/CronExpression.java | 23 ++++++++------------
 4 files changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8a0c9f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
----------------------------------------------------------------------
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 b503ac9..0f54176 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
@@ -69,7 +69,8 @@ public final class CronTriggeringPolicy extends 
AbstractTriggeringPolicy {
         final Date now = new Date();
         final Date lastRollForFile = cronExpression.getPrevFireTime(new 
Date(this.manager.getFileTime()));
         final Date lastRegularRoll = cronExpression.getPrevFireTime(new 
Date());
-        if (checkOnStartup && lastRollForFile.before(lastRegularRoll)) {
+        if (checkOnStartup && lastRollForFile != null && lastRegularRoll != 
null &&
+                lastRollForFile.before(lastRegularRoll)) {
             lastRollDate = lastRollForFile;
             rollover();
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8a0c9f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 525d8ad..71647a0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -229,13 +229,18 @@ public class RollingFileManager extends FileManager {
             ++count;
         } while (!(policyUpdated = triggeringPolicyUpdater.compareAndSet(this, 
this.triggeringPolicy, triggeringPolicy))
                 && count < MAX_TRIES);
-        if (policyUpdated)
+        if (policyUpdated) {
             if (triggeringPolicy instanceof LifeCycle) {
                 ((LifeCycle) triggeringPolicy).start();
             }
             if (policy instanceof LifeCycle) {
                 ((LifeCycle) policy).stop();
             }
+        } else {
+            if (triggeringPolicy instanceof LifeCycle) {
+                ((LifeCycle) triggeringPolicy).stop();
+            }
+        }
     }
 
     public void setRolloverStrategy(final RolloverStrategy rolloverStrategy) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8a0c9f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
index 98aff02..4eaa007 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
@@ -181,8 +181,12 @@ public class ConfigurationScheduler extends 
AbstractLifeCycle {
             if (scheduledItems > 0) {
                 LOGGER.debug("{} starting {} threads", SIMPLE_NAME, 
scheduledItems);
                 scheduledItems = Math.min(scheduledItems, MAX_SCHEDULED_ITEMS);
-                this.executorService = new 
ScheduledThreadPoolExecutor(scheduledItems,
+                ScheduledThreadPoolExecutor executor = new 
ScheduledThreadPoolExecutor(scheduledItems,
                         
Log4jThreadFactory.createDaemonThreadFactory("Scheduled"));
+                
executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false);
+                
executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
+                this.executorService = executor;
+
             } else {
                 LOGGER.debug("{}: No scheduled items", SIMPLE_NAME);
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8a0c9f6/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
index 626bfba..11e11dc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
@@ -252,6 +252,11 @@ public final class CronExpression {
     protected transient boolean expressionParsed = false;
 
     public static final int MAX_YEAR = 
Calendar.getInstance().get(Calendar.YEAR) + 100;
+    public static final Calendar MIN_CAL = Calendar.getInstance();
+    static {
+        MIN_CAL.set(1970, 0, 1);
+    }
+    public static final Date MIN_DATE = MIN_CAL.getTime();
 
     /**
      * Constructs a new <CODE>CronExpression</CODE> based on the specified
@@ -1574,8 +1579,11 @@ public final class CronExpression {
         do {
             Date prevCheckDate = new Date(start.getTime() - minIncrement);
             prevFireTime = getTimeAfter(prevCheckDate);
+            if (prevFireTime == null || prevFireTime.before(MIN_DATE)) {
+                return null;
+            }
             start = prevCheckDate;
-        } while (prevFireTime.after(targetDate));
+        } while (prevFireTime.compareTo(targetDate) >= 0);
         return prevFireTime;
     }
 
@@ -1621,19 +1629,6 @@ public final class CronExpression {
         return min;
     }
 
-    private int findIncrement(String[] expression) {
-        //        * * * * * * *
-        //        [0]SEC  [1]MIN [2]HOUR    [3]DAYOFMONTH  [4]MONTH   
[5]DAYOFWEEK   [6]YEAR
-        for (int i = 0; i < expression.length; i++) {
-            if (expression[i].equals("*")) {
-                return i;
-            }
-        }
-
-        // we default to year TODO: optimize
-        return YEAR;
-    }
-
     /**
      * NOT YET IMPLEMENTED: Returns the final time that the
      * <code>CronExpression</code> will match.

Reply via email to