Repository: curator
Updated Branches:
  refs/heads/long_session_timeout_issue 1e07c779a -> ef3627558


 #noissue - Modified connection state handling so that the poll period when in 
a SUSPENDED state will match the remaining amount of time left until the 
session expires, rather than 2/3 of the session timeout. This will cause the 
LOST event to get triggered at the end of the session timeout window. Updated a 
few unit tests that were failing intermitently due to timing issues.


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

Branch: refs/heads/long_session_timeout_issue
Commit: ef36275585fb883bb54db5a1396c58bb42b9b25b
Parents: 1e07c77
Author: Cam McKenzie <cammcken...@apache.org>
Authored: Tue Jun 14 13:49:07 2016 +1000
Committer: Cam McKenzie <cammcken...@apache.org>
Committed: Tue Jun 14 13:49:07 2016 +1000

----------------------------------------------------------------------
 .../apache/curator/framework/state/ConnectionStateManager.java  | 4 +++-
 .../apache/curator/framework/imps/TestFailedDeleteManager.java  | 2 +-
 .../framework/recipes/locks/TestInterProcessSemaphore.java      | 5 ++---
 3 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/ef362755/curator-framework/src/main/java/org/apache/curator/framework/state/ConnectionStateManager.java
----------------------------------------------------------------------
diff --git 
a/curator-framework/src/main/java/org/apache/curator/framework/state/ConnectionStateManager.java
 
b/curator-framework/src/main/java/org/apache/curator/framework/state/ConnectionStateManager.java
index cbb8d16..c420a12 100644
--- 
a/curator-framework/src/main/java/org/apache/curator/framework/state/ConnectionStateManager.java
+++ 
b/curator-framework/src/main/java/org/apache/curator/framework/state/ConnectionStateManager.java
@@ -252,7 +252,9 @@ public class ConnectionStateManager implements Closeable
             {
                 int lastNegotiatedSessionTimeoutMs = 
client.getZookeeperClient().getLastNegotiatedSessionTimeoutMs();
                 int useSessionTimeoutMs = (lastNegotiatedSessionTimeoutMs > 0) 
? lastNegotiatedSessionTimeoutMs : sessionTimeoutMs;
-                int pollMaxMs = (useSessionTimeoutMs * 2) / 3; // 2/3 of 
session timeout
+                long elapsedMs = startOfSuspendedEpoch == 0 ? 0 : 
System.currentTimeMillis() - startOfSuspendedEpoch;
+                long pollMaxMs = useSessionTimeoutMs - elapsedMs;
+
                 final ConnectionState newState = eventQueue.poll(pollMaxMs, 
TimeUnit.MILLISECONDS);
                 if ( newState != null )
                 {

http://git-wip-us.apache.org/repos/asf/curator/blob/ef362755/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFailedDeleteManager.java
----------------------------------------------------------------------
diff --git 
a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFailedDeleteManager.java
 
b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFailedDeleteManager.java
index 943529f..41b0bca 100644
--- 
a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFailedDeleteManager.java
+++ 
b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFailedDeleteManager.java
@@ -140,7 +140,7 @@ public class TestFailedDeleteManager extends 
BaseClassForTests
                 client.delete().guaranteed().forPath("/test-me");
                 Assert.fail();
             }
-            catch ( KeeperException.ConnectionLossException e )
+            catch ( KeeperException.ConnectionLossException | 
KeeperException.SessionExpiredException e )
             {
                 // expected
             }

http://git-wip-us.apache.org/repos/asf/curator/blob/ef362755/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessSemaphore.java
----------------------------------------------------------------------
diff --git 
a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessSemaphore.java
 
b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessSemaphore.java
index 7e821d0..079b12c 100644
--- 
a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessSemaphore.java
+++ 
b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessSemaphore.java
@@ -148,10 +148,9 @@ public class TestInterProcessSemaphore extends 
BaseClassForTests
                     }
                 }
             });
-
-            timing.sleepABit();
+      
             server.stop();
-            Assert.assertTrue(timing.awaitLatch(lostLatch));
+            Assert.assertTrue(timing.multiple(2).awaitLatch(lostLatch));
             InterProcessSemaphoreV2.debugAcquireLatch.countDown();  // the 
waiting semaphore proceeds to getChildren - which should fail
             
Assert.assertTrue(timing.awaitLatch(InterProcessSemaphoreV2.debugFailedGetChildrenLatch));
  // wait until getChildren fails
 

Reply via email to