Repository: logging-log4j2 Updated Branches: refs/heads/master 734fc8202 -> f282f9444
Ensure the triggering policy is replaced Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f282f944 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f282f944 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f282f944 Branch: refs/heads/master Commit: f282f944448400648ffdcd78b9291b48421de0d0 Parents: 734fc82 Author: Ralph Goers <[email protected]> Authored: Mon Jan 2 22:17:21 2017 -0700 Committer: Ralph Goers <[email protected]> Committed: Mon Jan 2 22:17:21 2017 -0700 ---------------------------------------------------------------------- .../appender/rolling/RollingFileManager.java | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f282f944/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 9dc7a16..525d8ad 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 @@ -46,6 +46,7 @@ import org.apache.logging.log4j.core.util.Constants; public class RollingFileManager extends FileManager { private static RollingFileManagerFactory factory = new RollingFileManagerFactory(); + private static final int MAX_TRIES = 3; protected long size; private long initialTime; @@ -222,13 +223,19 @@ public class RollingFileManager extends FileManager { public void setTriggeringPolicy(final TriggeringPolicy triggeringPolicy) { triggeringPolicy.initialize(this); TriggeringPolicy policy = this.triggeringPolicy; - triggeringPolicyUpdater.compareAndSet(this, this.triggeringPolicy, triggeringPolicy); - if (triggeringPolicy instanceof LifeCycle) { - ((LifeCycle) triggeringPolicy).start(); - } - if (policy instanceof LifeCycle) { - ((LifeCycle) policy).stop(); - } + int count = 0; + boolean policyUpdated = false; + do { + ++count; + } while (!(policyUpdated = triggeringPolicyUpdater.compareAndSet(this, this.triggeringPolicy, triggeringPolicy)) + && count < MAX_TRIES); + if (policyUpdated) + if (triggeringPolicy instanceof LifeCycle) { + ((LifeCycle) triggeringPolicy).start(); + } + if (policy instanceof LifeCycle) { + ((LifeCycle) policy).stop(); + } } public void setRolloverStrategy(final RolloverStrategy rolloverStrategy) {
