Added System property to choose if connection issues are always logged
as error level or only first issue is logged as error level, and
subsequent issues are logged as debug. By default only first issue is
logged as error

Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/048688a3
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/048688a3
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/048688a3

Branch: refs/heads/CURATOR-105
Commit: 048688a36856d1ef7e080410b8818952210fb1e8
Parents: ab3ff72
Author: eceejcr <ecee...@e7b499bae9dde0.ericsson.se>
Authored: Sun May 11 01:05:03 2014 +0200
Committer: eceejcr <ecee...@e7b499bae9dde0.ericsson.se>
Committed: Sun May 11 01:05:03 2014 +0200

----------------------------------------------------------------------
 .../org/apache/curator/utils/DebugUtils.java    |  1 +
 .../framework/imps/CuratorFrameworkImpl.java    | 33 ++++++++++++--------
 2 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/048688a3/curator-client/src/main/java/org/apache/curator/utils/DebugUtils.java
----------------------------------------------------------------------
diff --git 
a/curator-client/src/main/java/org/apache/curator/utils/DebugUtils.java 
b/curator-client/src/main/java/org/apache/curator/utils/DebugUtils.java
index 64c2d6e..0ce2729 100644
--- a/curator-client/src/main/java/org/apache/curator/utils/DebugUtils.java
+++ b/curator-client/src/main/java/org/apache/curator/utils/DebugUtils.java
@@ -22,6 +22,7 @@ public class DebugUtils
 {
     public static final String          PROPERTY_LOG_EVENTS = 
"curator-log-events";
     public static final String          PROPERTY_DONT_LOG_CONNECTION_ISSUES = 
"curator-dont-log-connection-problems";
+    public static final String          
PROPERTY_LOG_ALL_CONNECTION_ISSUES_AS_ERROR_LEVEL = 
"curator-log-all-connection-issues-as-error-level";
 
     private DebugUtils()
     {

http://git-wip-us.apache.org/repos/asf/curator/blob/048688a3/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
----------------------------------------------------------------------
diff --git 
a/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
 
b/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
index d6a5973..3a78967 100644
--- 
a/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
+++ 
b/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
@@ -56,7 +56,8 @@ import java.util.concurrent.atomic.AtomicReference;
 
 public class CuratorFrameworkImpl implements CuratorFramework
 {
-    private final Logger                                                log = 
LoggerFactory.getLogger(getClass());
+
+       private final Logger                                                log 
= LoggerFactory.getLogger(getClass());
     private final CuratorZookeeperClient                                client;
     private final ListenerContainer<CuratorListener>                    
listeners;
     private final ListenerContainer<UnhandledErrorListener>             
unhandledErrorListeners;
@@ -73,7 +74,9 @@ public class CuratorFrameworkImpl implements CuratorFramework
     private final NamespaceWatcherMap                                   
namespaceWatcherMap = new NamespaceWatcherMap(this);
 
     private volatile ExecutorService                                    
executorService;
-    private AtomicBoolean                                               
logAsErrorConnectionErrors = new AtomicBoolean(false);
+    private final AtomicBoolean                                         
logAsErrorConnectionErrors = new AtomicBoolean(false);
+
+    private static final boolean                                        
LOG_ALL_CONNECTION_ISSUES_AS_ERROR_LEVEL = 
Boolean.getBoolean(DebugUtils.PROPERTY_LOG_ALL_CONNECTION_ISSUES_AS_ERROR_LEVEL);
 
     interface DebugBackgroundListener
     {
@@ -233,16 +236,20 @@ public class CuratorFrameworkImpl implements 
CuratorFramework
         try
         {
             connectionStateManager.start(); // ordering dependency - must be 
called before client.start()
-            ConnectionStateListener listener = new ConnectionStateListener() {
-                               @Override
-                               public void stateChanged(CuratorFramework 
client, ConnectionState newState) {
-                                       if ( ConnectionState.CONNECTED == 
newState || ConnectionState.RECONNECTED == newState )
-                                       {
-                                               
logAsErrorConnectionErrors.set(true);
-                                       }
-                               }
-                       };
-                       
this.getConnectionStateListenable().addListener(listener);
+            
+            final ConnectionStateListener listener = new 
ConnectionStateListener()
+            {
+                @Override
+                public void stateChanged(CuratorFramework client, 
ConnectionState newState)
+                {
+                    if ( ConnectionState.CONNECTED == newState || 
ConnectionState.RECONNECTED == newState )
+                    {
+                        logAsErrorConnectionErrors.set(true);
+                    }
+                }
+            };
+            
+            this.getConnectionStateListenable().addListener(listener);
 
             client.start();
 
@@ -524,7 +531,7 @@ public class CuratorFrameworkImpl implements 
CuratorFramework
         if ( 
!Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) || !(e 
instanceof KeeperException) )
         {
             if ( e instanceof KeeperException.ConnectionLossException || e 
instanceof CuratorConnectionLossException ) {
-                if ( logAsErrorConnectionErrors.compareAndSet(true, false) )
+                if ( LOG_ALL_CONNECTION_ISSUES_AS_ERROR_LEVEL || 
logAsErrorConnectionErrors.compareAndSet(true, false) )
                 {
                     log.error(reason, e);
                 }

Reply via email to