You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by hi...@apache.org on 2017/03/10 21:32:14 UTC

geode git commit: GEODE-2642 Fixed ping thread issue on client.

Repository: geode
Updated Branches:
  refs/heads/develop c1b6f9f79 -> 27995d6cc


GEODE-2642 Fixed ping thread issue on client.

Client ping thread wakes up every "ping-interval" and then it checks
whether someone already did some operation on that server or not, in the
last ping-interval. If there is some operation, then it doesn't ping
server and wakes up again after ping-interval.Otherwise ot pings the
server. But if operation happens just start of the previous ping-interval
then client thread will ping server after more than ping-interval.
This can cause an issue. Thus to avoid this race condition, now ping
thread will wake up in ping-interval/2 and will make sure it pings server.


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

Branch: refs/heads/develop
Commit: 27995d6cc2f02ba7edbbc094117ffeaaf61d00e2
Parents: c1b6f9f
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Fri Mar 10 13:31:25 2017 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Fri Mar 10 13:33:19 2017 -0800

----------------------------------------------------------------------
 .../org/apache/geode/cache/client/internal/LiveServerPinger.java  | 2 +-
 .../geode/cache/client/internal/ConnectionPoolImplJUnitTest.java  | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/27995d6c/geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java
index bcb8eec..32d0f8e 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java
@@ -42,7 +42,7 @@ public class LiveServerPinger extends EndpointListenerAdapter {
 
   public LiveServerPinger(InternalPool pool) {
     this.pool = pool;
-    this.pingIntervalNanos = pool.getPingInterval() * NANOS_PER_MS;
+    this.pingIntervalNanos = ((pool.getPingInterval() + 1) / 2) * NANOS_PER_MS;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/geode/blob/27995d6c/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
index 272580d..45a4494 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
@@ -148,6 +148,9 @@ public class ConnectionPoolImplJUnitTest {
       assertEquals(port, addr.getPort());
       assertEquals("localhost", addr.getHostName());
     }
+    LiveServerPinger lsp = new LiveServerPinger(pool);
+    long NANOS_PER_MS = 1000000L;
+    assertEquals(((pool.getPingInterval() + 1)/ 2) * NANOS_PER_MS, lsp.pingIntervalNanos  );
   }
 
   @Test