You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2017/01/03 05:17:28 UTC

logging-log4j2 git commit: Ensure the triggering policy is replaced

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 <rg...@nextiva.com>
Authored: Mon Jan 2 22:17:21 2017 -0700
Committer: Ralph Goers <rg...@nextiva.com>
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) {