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