You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2016/08/29 18:40:40 UTC

[1/7] logging-log4j2 git commit: LOG4J2-1235 - org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly 1. Removed issue with NPE when tries to delete already deleted appender 2. Added parameter checkInterval for cases when al

Repository: logging-log4j2
Updated Branches:
  refs/heads/master af7d1a0d7 -> c85a63c09


LOG4J2-1235 - org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly 1. Removed issue with NPE when tries to delete already deleted appender 2. Added parameter checkInterval for cases when all appenders already purged, so scheduler will keep working with this interval 3. Fixed an issue when appender purged even if received new event to it during purge procedure


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

Branch: refs/heads/master
Commit: 040e29e209133efef788eb4132de30262d954ee4
Parents: af7d1a0
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Fri May 27 15:29:37 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:53 2016 -0700

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  | 56 +++++++++++++-------
 .../core/appender/routing/RoutingAppender.java  | 14 +++--
 .../routing/RoutingAppenderWithPurgingTest.java | 19 +++++--
 3 files changed, 64 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index f4f6e35..dacf993 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -22,7 +22,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -32,7 +31,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.status.StatusLogger;
 
 /**
  * Policy is purging appenders that were not in use specified time in minutes
@@ -41,15 +39,16 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Scheduled
 public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, Runnable {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
     private final long timeToLive;
+    private final long checkInterval;    
     private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
     private RoutingAppender routingAppender;
     private final ConfigurationScheduler scheduler;
     private volatile ScheduledFuture<?> future = null;
 
-    public IdlePurgePolicy(final long timeToLive, final ConfigurationScheduler scheduler) {
+    public IdlePurgePolicy(long timeToLive, long checkInterval, final ConfigurationScheduler scheduler) {
         this.timeToLive = timeToLive;
+        this.checkInterval = checkInterval;
         this.scheduler = scheduler;
     }
 
@@ -73,8 +72,9 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
-                appendersUsage.remove(entry.getKey());
-                routingAppender.deleteAppender(entry.getKey());
+                if(appendersUsage.remove(entry.getKey(), entry.getValue())) {
+                    routingAppender.deleteAppender(entry.getKey());
+                }
             }
         }
     }
@@ -100,33 +100,39 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     }
 
     private void scheduleNext() {
-        long createTime = Long.MAX_VALUE;
+        long updateTime = Long.MAX_VALUE;
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
-            if (entry.getValue() < createTime) {
-                createTime = entry.getValue();
+            if (entry.getValue() < updateTime) {
+                updateTime = entry.getValue();
             }
         }
-        if (createTime < Long.MAX_VALUE) {
-            final long interval = timeToLive - (System.currentTimeMillis() - createTime);
+
+        if (updateTime < Long.MAX_VALUE) {
+            long interval = timeToLive - (System.currentTimeMillis() - updateTime);
             future = scheduler.schedule(this, interval, TimeUnit.MILLISECONDS);
+        } else {
+            // reset to initial state - in case of all appenders already purged
+            future = scheduler.schedule(this, checkInterval, TimeUnit.MILLISECONDS);
         }
     }
 
     /**
      * Create the PurgePolicy
      *
-     * @param timeToLive the number of increments of timeUnit before the Appender should be purged.
-     * @param timeUnit   the unit of time the timeToLive is expressed in.
+     * @param timeToLive    the number of increments of timeUnit before the Appender should be purged.
+     * @param checkInterval when all appenders purged, the number of increments of timeUnit to check if any appenders appeared  
+     * @param timeUnit      the unit of time the timeToLive and the checkInterval is expressed in.
      * @return The Routes container.
      */
     @PluginFactory
     public static PurgePolicy createPurgePolicy(
         @PluginAttribute("timeToLive") final String timeToLive,
+        @PluginAttribute("checkInterval") final String checkInterval,
         @PluginAttribute("timeUnit") final String timeUnit,
         @PluginConfiguration final Configuration configuration) {
 
         if (timeToLive == null) {
-            LOGGER.error("A timeToLive  value is required");
+            LOGGER.error("A timeToLive value is required");
             return null;
         }
         TimeUnit units;
@@ -136,15 +142,29 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
             try {
                 units = TimeUnit.valueOf(timeUnit.toUpperCase());
             } catch (final Exception ex) {
-                LOGGER.error("Invalid time unit {}", timeUnit);
+                LOGGER.error("Invalid timeUnit value {}. timeUnit set to MINUTES", timeUnit, ex);
                 units = TimeUnit.MINUTES;
             }
         }
 
-        final long ttl = units.toMillis(Long.parseLong(timeToLive));
-
+        long ttl = units.toMillis(Long.parseLong(timeToLive));
+        if(ttl < 0) {
+            LOGGER.error("timeToLive must be positive. timeToLive set to 0");
+            ttl = 0;
+        }
+        
+        long ci;
+        if(checkInterval == null) {
+            ci = ttl;
+        } else {
+            ci = units.toMillis(Long.parseLong(checkInterval));
+            if(ci < 0) {
+                LOGGER.error("checkInterval must be positive. checkInterval set equal to timeToLive = {}", ttl);
+                ci = ttl;
+            }
+        }
 
-        return new IdlePurgePolicy(ttl, configuration.getScheduler());
+        return new IdlePurgePolicy(ttl, ci, configuration.getScheduler());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 0df19eb..059413d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -182,9 +182,17 @@ public final class RoutingAppender extends AbstractAppender {
      * @param key The appender's key
      */
     public void deleteAppender(final String key) {
-    	LOGGER.debug("Stopping route with key" + key);
-    	final AppenderControl control = appenders.remove(key);
-    	control.getAppender().stop();
+        LOGGER.debug("Stopping route with key" + key);
+        AppenderControl control = appenders.remove(key);
+        control.getAppender().stop();
+        LOGGER.debug("Deleting route with " + key + " key ");
+        AppenderControl control = appenders.remove(key);
+        if(null != control) {
+            LOGGER.debug("Stopping route with " + key + " key");
+            control.getAppender().stop();
+        } else {
+            LOGGER.debug("Route with " + key + " key already deleted");
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
index 8fdb402..9fc4005 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
@@ -105,11 +105,22 @@ public class RoutingAppenderWithPurgingTest {
 
         assertEquals("Incorrect number of appenders with IdlePurgePolicy.", 1, routingAppenderIdle.getAppenders().size());
         assertEquals("Incorrect number of appenders with manual purge.", 0, routingAppenderManual.getAppenders().size());
+
+        msg = new StructuredDataMessage("5", "This is a test 5", "Service");
+        EventLogger.logEvent(msg);
+
+        assertEquals("Incorrect number of appenders with manual purge.", 1, routingAppenderManual.getAppenders().size());
+
+        routingAppenderManual.deleteAppender("5");
+        routingAppenderManual.deleteAppender("5");
+
+        assertEquals("Incorrect number of appenders with manual purge.", 0, routingAppenderManual.getAppenders().size());
     }
 
-    private void assertFileExistance(final String... files) {
-    	for (final String file : files) {
-			assertTrue("File should exist - " + file + " file ", new File(file).exists());
-		}
+
+    private void assertFileExistance(String... files) {
+        for (String file : files) {
+            assertTrue("File should exist - " + file + " file ", new File(file).exists());
+        }
     }
 }


[7/7] logging-log4j2 git commit: [LOG4J2-1235] org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.

Posted by gg...@apache.org.
[LOG4J2-1235]
org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not
working correctly.

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

Branch: refs/heads/master
Commit: c85a63c095e86a165e733e5b07e813ec8788a803
Parents: daa6776
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 11:40:03 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 11:40:03 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c85a63c0/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6a12f64..b901033 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -96,6 +96,9 @@
       <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel">
         Properties declared in configuration can now have their value either in the element body or in an attribute named "value".
       </action>
+      <action issue="LOG4J2-1235" dev="ggregory" type="fix" due-to="Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky">
+        org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.
+      </action>
       <action issue="LOG4J2-1181" dev="mikes" type="add">
         Scala API.
       </action>


[6/7] logging-log4j2 git commit: Group "add"s together.

Posted by gg...@apache.org.
Group "add"s together.

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

Branch: refs/heads/master
Commit: daa6776713964e94942622b7fdc0fabca94bdb2f
Parents: 8968716
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 11:38:26 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 11:38:26 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/daa67767/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 108d75a..6a12f64 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,12 +24,6 @@
   </properties>
   <body>
     <release version="2.7" date="2016-MM-DD" description="GA Release 2.7">
-      <action issue="LOG4J2-1181" dev="mikes" type="add">
-        Scala API.
-      </action>
-      <action issue="LOG4J2-1512" dev="mikes" type="add">
-        Options to exclude stack trace from JSON, XML and YAML layouts.
-      </action>
       <action issue="LOG4J2-1511" dev="ggregory" type="fix" due-to="Srikanth Surukuntu">
         DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs.
       </action>
@@ -102,6 +96,12 @@
       <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel">
         Properties declared in configuration can now have their value either in the element body or in an attribute named "value".
       </action>
+      <action issue="LOG4J2-1181" dev="mikes" type="add">
+        Scala API.
+      </action>
+      <action issue="LOG4J2-1512" dev="mikes" type="add">
+        Options to exclude stack trace from JSON, XML and YAML layouts.
+      </action>
       <action issue="LOG4J2-1539" dev="ggregory" type="add" due-to="Gary Gregory">
         Add Core API Configurator.shutdown(LoggerContext, long, TimeUnit).
       </action>


[2/7] logging-log4j2 git commit: Fixed compilation error after merge with master

Posted by gg...@apache.org.
Fixed compilation error after merge with master


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

Branch: refs/heads/master
Commit: f8b86f5191ed7756f83fe8f3115d2eb5c2365ae7
Parents: d74f4b1
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Mon Aug 1 00:47:35 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:54 2016 -0700

----------------------------------------------------------------------
 .../logging/log4j/core/appender/routing/IdlePurgePolicy.java    | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8b86f51/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index 5a5ee6a..9fee717 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -31,6 +32,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.status.StatusLogger;
 
 /**
  * Policy is purging appenders that were not in use specified time in minutes
@@ -39,6 +41,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 @Scheduled
 public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, Runnable {
 
+    private static final Logger LOGGER = StatusLogger.getLogger();
     private final long timeToLive;
     private final long checkInterval;    
     private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
@@ -46,7 +49,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     private final ConfigurationScheduler scheduler;
     private volatile ScheduledFuture<?> future = null;
 
-    public IdlePurgePolicy(long timeToLive, long checkInterval, final ConfigurationScheduler scheduler) {
+    public IdlePurgePolicy(final long timeToLive, final long checkInterval, final ConfigurationScheduler scheduler) {
         this.timeToLive = timeToLive;
         this.checkInterval = checkInterval;
         this.scheduler = scheduler;


[4/7] logging-log4j2 git commit: Fixed compilation error after rebase

Posted by gg...@apache.org.
Fixed compilation error after rebase


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

Branch: refs/heads/master
Commit: 8968716e8edb24d2c0833d73c2a583bab9917e22
Parents: 183fbf2
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Fri Aug 5 12:04:47 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:55 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/routing/RoutingAppender.java     | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8968716e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 7e11254..18b7777 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -116,7 +116,7 @@ public final class RoutingAppender extends AbstractAppender {
         if (control != null) {
             control.callAppender(event);
         }
-        
+
         if (purgePolicy != null) {
             purgePolicy.update(key, event);
         }
@@ -171,20 +171,17 @@ public final class RoutingAppender extends AbstractAppender {
         LOGGER.error("No Appender was configured for route " + route.getKey());
         return null;
     }
-    
+
     public Map<String, AppenderControl> getAppenders() {
         return Collections.unmodifiableMap(appenders);
     }
-    
+
     /**
      * Delete specified appender
-     * 
+     *
      * @param key The appender's key
      */
     public void deleteAppender(final String key) {
-        LOGGER.debug("Stopping route with key" + key);
-        AppenderControl control = appenders.remove(key);
-        control.getAppender().stop();
         LOGGER.debug("Deleting route with " + key + " key ");
         final AppenderControl control = appenders.remove(key);
         if (null != control) {


[3/7] logging-log4j2 git commit: Added missing null check for future in stop() because future could be null if there wasn't an log event before

Posted by gg...@apache.org.
Added missing null check for future in stop() because future could be null if there wasn't an log event before


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

Branch: refs/heads/master
Commit: d74f4b13cad1ba3c11945afd4f0410f5ea03d29d
Parents: 040e29e
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Wed Jun 22 08:46:48 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:54 2016 -0700

----------------------------------------------------------------------
 .../logging/log4j/core/appender/routing/IdlePurgePolicy.java     | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d74f4b13/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index dacf993..5a5ee6a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -60,7 +60,9 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     @Override
     public void stop() {
         super.stop();
-        future.cancel(true);
+        if(future != null) {
+            future.cancel(true);
+        }
     }
 
     /**


[5/7] logging-log4j2 git commit: Code style fixes

Posted by gg...@apache.org.
Code style fixes


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

Branch: refs/heads/master
Commit: 183fbf23944256f7ba3a38315077f0368e76c460
Parents: f8b86f5
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Thu Aug 4 12:15:07 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:55 2016 -0700

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  | 10 +++++-----
 .../core/appender/routing/RoutingAppender.java  | 20 ++++++++++----------
 2 files changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/183fbf23/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index 9fee717..e2b818e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -63,7 +63,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     @Override
     public void stop() {
         super.stop();
-        if(future != null) {
+        if (future != null) {
             future.cancel(true);
         }
     }
@@ -77,7 +77,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
-                if(appendersUsage.remove(entry.getKey(), entry.getValue())) {
+                if (appendersUsage.remove(entry.getKey(), entry.getValue())) {
                     routingAppender.deleteAppender(entry.getKey());
                 }
             }
@@ -153,17 +153,17 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         }
 
         long ttl = units.toMillis(Long.parseLong(timeToLive));
-        if(ttl < 0) {
+        if (ttl < 0) {
             LOGGER.error("timeToLive must be positive. timeToLive set to 0");
             ttl = 0;
         }
         
         long ci;
-        if(checkInterval == null) {
+        if (checkInterval == null) {
             ci = ttl;
         } else {
             ci = units.toMillis(Long.parseLong(checkInterval));
-            if(ci < 0) {
+            if (ci < 0) {
                 LOGGER.error("checkInterval must be positive. checkInterval set equal to timeToLive = {}", ttl);
                 ci = ttl;
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/183fbf23/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 059413d..7e11254 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -52,7 +52,7 @@ public final class RoutingAppender extends AbstractAppender {
     private final Configuration config;
     private final ConcurrentMap<String, AppenderControl> appenders = new ConcurrentHashMap<>();
     private final RewritePolicy rewritePolicy;
-	  private final PurgePolicy purgePolicy;
+    private final PurgePolicy purgePolicy;
 
     private RoutingAppender(final String name, final Filter filter, final boolean ignoreExceptions, final Routes routes,
                             final RewritePolicy rewritePolicy, final Configuration config, final PurgePolicy purgePolicy) {
@@ -61,8 +61,8 @@ public final class RoutingAppender extends AbstractAppender {
         this.config = config;
         this.rewritePolicy = rewritePolicy;
         this.purgePolicy = purgePolicy;
-        if(this.purgePolicy != null) {
-        	this.purgePolicy.initialize(this);
+        if (this.purgePolicy != null) {
+            this.purgePolicy.initialize(this);
         }
         Route defRoute = null;
         for (final Route route : routes.getRoutes()) {
@@ -117,12 +117,12 @@ public final class RoutingAppender extends AbstractAppender {
             control.callAppender(event);
         }
         
-        if(purgePolicy != null) {
-        	purgePolicy.update(key, event);
+        if (purgePolicy != null) {
+            purgePolicy.update(key, event);
         }
     }
 
-	private synchronized AppenderControl getControl(final String key, final LogEvent event) {
+    private synchronized AppenderControl getControl(final String key, final LogEvent event) {
         AppenderControl control = appenders.get(key);
         if (control != null) {
             return control;
@@ -173,8 +173,8 @@ public final class RoutingAppender extends AbstractAppender {
     }
     
     public Map<String, AppenderControl> getAppenders() {
-		return Collections.unmodifiableMap(appenders);
-	}    
+        return Collections.unmodifiableMap(appenders);
+    }
     
     /**
      * Delete specified appender
@@ -186,8 +186,8 @@ public final class RoutingAppender extends AbstractAppender {
         AppenderControl control = appenders.remove(key);
         control.getAppender().stop();
         LOGGER.debug("Deleting route with " + key + " key ");
-        AppenderControl control = appenders.remove(key);
-        if(null != control) {
+        final AppenderControl control = appenders.remove(key);
+        if (null != control) {
             LOGGER.debug("Stopping route with " + key + " key");
             control.getAppender().stop();
         } else {