GEODE-1874: Changed setNextNeighbor to not create HashMap for every p2p 
invocation


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

Branch: refs/heads/develop
Commit: 593c7025f929819fde2e12ca05d24c6abe29b3a4
Parents: 5b0c565
Author: Udo Kohlmeyer <ukohlme...@pivotal.io>
Authored: Wed Oct 12 11:54:33 2016 +1100
Committer: Udo Kohlmeyer <ukohlme...@pivotal.io>
Committed: Tue Nov 8 07:09:19 2016 +1100

----------------------------------------------------------------------
 .../internal/membership/gms/fd/GMSHealthMonitor.java | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/593c7025/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
index b3598cd..97a413c 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
@@ -374,14 +374,15 @@ public class GMSHealthMonitor implements HealthMonitor, 
MessageHandler {
    */
   private void contactedBy(InternalDistributedMember sender, long timeStamp) {
     TimeStamp cTS = new TimeStamp(timeStamp);
+    //TODO Udo: why putIfAbsent. Surely only put is required
     cTS = memberTimeStamps.putIfAbsent(sender, cTS);
     if (cTS != null && cTS.getTime() < timeStamp) {
       cTS.setTime(timeStamp);
     }
     if (suspectedMemberInView.remove(sender) != null) {
       logger.info("No longer suspecting {}", sender);
-      setNextNeighbor(currentView, null);
     }
+    setNextNeighbor(currentView, null);
   }
 
 
@@ -833,7 +834,7 @@ public class GMSHealthMonitor implements HealthMonitor, 
MessageHandler {
     }
 
     List<InternalDistributedMember> allMembers = newView.getMembers();
-    //
+
     //    Set<InternalDistributedMember> checkAllSuspected = new 
HashSet<>(allMembers);
     //    checkAllSuspected.removeAll(suspectedMemberInView.keySet());
     //    checkAllSuspected.remove(localAddress);
@@ -1065,7 +1066,10 @@ public class GMSHealthMonitor implements HealthMonitor, 
MessageHandler {
 
   private void processHeartbeat(HeartbeatMessage m) {
     this.stats.incHeartbeatsReceived();
-    if (m.getRequestId() >= 0) {
+    if (m.getRequestId() < 0) {
+      // a periodic heartbeat
+      contactedBy(m.getSender(), System.currentTimeMillis());
+    } else {
       Response resp = requestIdVsResponse.get(m.getRequestId());
       logger.trace("Got heartbeat from member {}. {}", m.getSender(), (resp != 
null ? "Check thread still waiting" : "Check thread is not waiting"));
       if (resp != null) {
@@ -1074,10 +1078,9 @@ public class GMSHealthMonitor implements HealthMonitor, 
MessageHandler {
           resp.notify();
         }
       }
-
+      //we got heartbeat lets update timestamp
+      contactedBy(m.getSender(), System.currentTimeMillis());
     }
-    //we got heartbeat lets update timestamp
-    contactedBy(m.getSender(), System.currentTimeMillis());
   }
 
   /**

Reply via email to