You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2013/11/10 03:49:49 UTC

[6/9] git commit: Background operations were not checking if the client was connected. Further, the connection timeout was not being respected as it is in foreground operations

Background operations were not checking if the client was connected. Further, the connection timeout was not being respected as it is in foreground operations


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

Branch: refs/heads/master
Commit: 9299e9bbf889470dae8b7c14956a23f73e8097db
Parents: 28b63b0
Author: randgalt <ra...@apache.org>
Authored: Sat Nov 9 18:46:59 2013 -0800
Committer: randgalt <ra...@apache.org>
Committed: Sat Nov 9 18:46:59 2013 -0800

----------------------------------------------------------------------
 .../framework/imps/CuratorFrameworkImpl.java        | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/9299e9bb/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 87353bf..d56c9a4 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
@@ -50,6 +50,7 @@ import java.util.concurrent.DelayQueue;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 
 public class CuratorFrameworkImpl implements CuratorFramework
@@ -669,7 +670,20 @@ public class CuratorFrameworkImpl implements CuratorFramework
     {
         try
         {
-            operationAndData.callPerformBackgroundOperation();
+            if ( client.isConnected() )
+            {
+                operationAndData.callPerformBackgroundOperation();
+            }
+            else
+            {
+                client.getZooKeeper();  // important - allow connection resets, timeouts, etc. to occur
+                if ( operationAndData.getElapsedTimeMs() >= client.getConnectionTimeoutMs() )
+                {
+                    throw new CuratorConnectionLossException();
+                }
+                operationAndData.sleepFor(1, TimeUnit.SECONDS);
+                queueOperation(operationAndData);
+            }
         }
         catch ( Throwable e )
         {