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.
