You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2015/12/10 23:54:06 UTC

incubator-geode git commit: adding a unit test for initiation of suspect processing when shared/unordered

Repository: incubator-geode
Updated Branches:
  refs/heads/develop 24c170afb -> 1c423796b


adding a unit test for initiation of suspect processing when shared/unordered

As part of this work I changed the internal membership listener interfaces to
propagate the reason for initiating suspect processing.  The test gathers
these reasons and asserts that at least one is initiated by TCPConduit.


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

Branch: refs/heads/develop
Commit: 1c423796bc6dd9b0ce0f5557b6f4b31e1466f23d
Parents: 24c170a
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Thu Dec 10 14:52:36 2015 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Thu Dec 10 14:53:50 2015 -0800

----------------------------------------------------------------------
 .../DistributedSystemHealthEvaluator.java       |  2 +-
 .../internal/DistributionAdvisor.java           |  2 +-
 .../internal/DistributionManager.java           | 24 +++++++++++++-------
 .../internal/MembershipListener.java            |  3 ++-
 .../distributed/internal/ProductUseLog.java     |  2 +-
 .../distributed/internal/ReplyProcessor21.java  |  2 +-
 .../internal/locks/DLockGrantor.java            |  2 +-
 .../DistributedMembershipListener.java          |  3 ++-
 .../internal/membership/gms/Services.java       | 12 +++++-----
 .../internal/membership/gms/SuspectMember.java  |  9 ++++++--
 .../membership/gms/auth/GMSAuthenticator.java   |  2 +-
 .../membership/gms/fd/GMSHealthMonitor.java     |  4 ++--
 .../membership/gms/interfaces/Service.java      |  3 ++-
 .../membership/gms/membership/GMSJoinLeave.java |  2 +-
 .../gms/messenger/JGroupsMessenger.java         |  2 +-
 .../gms/mgr/GMSMembershipManager.java           |  6 ++---
 .../admin/remote/RemoteGfManagerAgent.java      |  2 +-
 .../internal/cache/DistributedRegion.java       |  2 +-
 .../internal/cache/InitialImageFlowControl.java |  2 +-
 .../internal/cache/PRHARedundancyProvider.java  |  4 ++--
 .../internal/cache/PartitionedRegion.java       |  2 +-
 .../internal/cache/PartitionedRegionHelper.java |  2 +-
 .../cache/SearchLoadAndWriteProcessor.java      |  2 +-
 .../gemfire/internal/cache/TXCommitMessage.java |  2 +-
 .../internal/cache/TXFarSideCMTracker.java      |  2 +-
 .../gemfire/internal/cache/TXManagerImpl.java   |  2 +-
 .../PartitionedRegionRebalanceOp.java           |  2 +-
 .../cache/persistence/BackupManager.java        |  2 +-
 .../persistence/PersistenceAdvisorImpl.java     |  2 +-
 .../persistence/PersistentMemberManager.java    |  2 +-
 .../cache/versions/RegionVersionVector.java     |  2 +-
 .../gemfire/internal/tcp/Connection.java        |  6 +++--
 .../management/internal/FederatingManager.java  |  5 ++--
 .../internal/ManagementMembershipListener.java  |  4 ++--
 .../internal/SystemManagementService.java       |  4 ++--
 .../internal/beans/MBeanAggregator.java         |  2 +-
 .../gemfire/distributed/LocatorDUnitTest.java   |  9 ++++++--
 .../gms/mgr/GMSMembershipManagerJUnitTest.java  |  8 +++----
 38 files changed, 87 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemHealthEvaluator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemHealthEvaluator.java b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemHealthEvaluator.java
index 534f559..511edba 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemHealthEvaluator.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemHealthEvaluator.java
@@ -166,7 +166,7 @@ class DistributedSystemHealthEvaluator
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
   
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisor.java
index dc76d6b..538fa96 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisor.java
@@ -244,7 +244,7 @@ public class DistributionAdvisor  {
       }
 
       public void memberSuspect(InternalDistributedMember id,
-          InternalDistributedMember whoSuspected) {
+          InternalDistributedMember whoSuspected, String reason) {
       }
       
    };

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
index 7a9f7c0..964845c 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
@@ -3333,9 +3333,10 @@ public class DistributionManager
   }
 
   /**
+   * @param reason TODO
    */
   public void handleManagerSuspect(InternalDistributedMember suspect, 
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
     if (!isCurrentMember(suspect)) {
       return; // fault tolerance
     }
@@ -3345,7 +3346,7 @@ public class DistributionManager
       return;
     }
 
-    addMemberEvent(new MemberSuspectEvent(suspect, whoSuspected));
+    addMemberEvent(new MemberSuspectEvent(suspect, whoSuspected, reason));
   }
   
   public void handleViewInstalled(NetView view) {
@@ -3756,7 +3757,7 @@ public class DistributionManager
                   }
                 }
                 public void memberSuspect(InternalDistributedMember id,
-                    InternalDistributedMember whoSuspected) {
+                    InternalDistributedMember whoSuspected, String reason) {
                 }
                 public void viewInstalled(NetView view) {
                 }
@@ -4424,8 +4425,8 @@ public class DistributionManager
       dm.handleManagerDeparture(theId, crashed, reason);
     }
     
-    public void memberSuspect(InternalDistributedMember suspect, InternalDistributedMember whoSuspected) {
-      dm.handleManagerSuspect(suspect, whoSuspected);
+    public void memberSuspect(InternalDistributedMember suspect, InternalDistributedMember whoSuspected, String reason) {
+      dm.handleManagerSuspect(suspect, whoSuspected, reason);
     }
     
     public void viewInstalled(NetView view) {
@@ -4579,20 +4580,27 @@ public class DistributionManager
    */
   private static final class MemberSuspectEvent extends MemberEvent {
     InternalDistributedMember whoSuspected;
-    MemberSuspectEvent(InternalDistributedMember suspect, InternalDistributedMember whoSuspected) {
+    String reason;
+    MemberSuspectEvent(InternalDistributedMember suspect, InternalDistributedMember whoSuspected, String reason) {
       super(suspect);
       this.whoSuspected = whoSuspected;
+      this.reason = reason;
     }
     public InternalDistributedMember whoSuspected() {
       return this.whoSuspected;
     }
+    
+    public String getReason() {
+      return this.reason;
+    }
+    
     @Override
     public String toString() {
-      return "member " + getId() + " suspected by: " + this.whoSuspected;
+      return "member " + getId() + " suspected by: " + this.whoSuspected + " reason: " + reason;
     }
     @Override
     protected void handleEvent(MembershipListener listener) {
-      listener.memberSuspect(getId(), whoSuspected());	
+      listener.memberSuspect(getId(), whoSuspected(), reason);	
     }
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/MembershipListener.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/MembershipListener.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/MembershipListener.java
index 78ed51b..b545653 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/MembershipListener.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/MembershipListener.java
@@ -60,9 +60,10 @@ public interface MembershipListener {
    * removed from the membership view
    * @param id the suspected member
    * @param whoSuspected the member that initiated suspect processing
+   * @param reason TODO
    */
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected);
+      InternalDistributedMember whoSuspected, String reason);
   
   /**
    * This is notification that more than 50% of member weight has been

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ProductUseLog.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ProductUseLog.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ProductUseLog.java
index 823b3d0..95d538c 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ProductUseLog.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ProductUseLog.java
@@ -136,7 +136,7 @@ public final class ProductUseLog implements MembershipListener {
 
   @Override
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java
index aa5f66c..b219630 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java
@@ -508,7 +508,7 @@ public class ReplyProcessor21
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
     if (isSevereAlertProcessingEnabled()) {
       // if we're waiting for the member that initiated suspicion, we don't
       // want to be hasty about kicking it out of the distributed system

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockGrantor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockGrantor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockGrantor.java
index 92cea62..b4e646c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockGrantor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockGrantor.java
@@ -3731,7 +3731,7 @@ public class DLockGrantor {
     public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {
     }
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     public void memberDeparted(final InternalDistributedMember id, final boolean crashed) {
       final DLockGrantor me = DLockGrantor.this;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
index acfd6ba..d970b6b 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
@@ -49,8 +49,9 @@ public interface DistributedMembershipListener extends DirectChannelListener {
   /**
    * Event indicating that a member is suspected of having departed but
    * is still in the membership view
+   * @param reason TODO
    */
-  public void memberSuspect(InternalDistributedMember suspect, InternalDistributedMember whoSuspected);
+  public void memberSuspect(InternalDistributedMember suspect, InternalDistributedMember whoSuspected, String reason);
 
   /**
    * Event indicating a message has been delivered that we need to process.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
index 799f95d..4484c00 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
@@ -277,20 +277,20 @@ public class Services {
     manager.installView(v);
   }
   
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
     try {
-      joinLeave.memberSuspected(initiator, suspect);
+      joinLeave.memberSuspected(initiator, suspect, reason);
     } finally {
       try {
-        healthMon.memberSuspected(initiator, suspect);
+        healthMon.memberSuspected(initiator, suspect, reason);
       } finally {
         try {
-          auth.memberSuspected(initiator, suspect);
+          auth.memberSuspected(initiator, suspect, reason);
         } finally {
           try {
-            messenger.memberSuspected(initiator, suspect);
+            messenger.memberSuspected(initiator, suspect, reason);
           } finally {
-            manager.memberSuspected(initiator, suspect);
+            manager.memberSuspected(initiator, suspect, reason);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java
index a03ee92..ca27698 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java
@@ -27,10 +27,15 @@ public class SuspectMember
   /** suspected member */
   public InternalDistributedMember suspectedMember;
   
-  /** create a new SuspectMember */
-  public SuspectMember(InternalDistributedMember whoSuspected, InternalDistributedMember suspectedMember) {
+  /** the reason */
+  public String reason;
+  
+  /** create a new SuspectMember 
+   * @param reason TODO*/
+  public SuspectMember(InternalDistributedMember whoSuspected, InternalDistributedMember suspectedMember, String reason) {
     this.whoSuspected = whoSuspected;
     this.suspectedMember = suspectedMember;
+    this.reason = reason;
   }
   
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/auth/GMSAuthenticator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/auth/GMSAuthenticator.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/auth/GMSAuthenticator.java
index 982942d..ba35e46 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/auth/GMSAuthenticator.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/auth/GMSAuthenticator.java
@@ -90,7 +90,7 @@ public class GMSAuthenticator implements Authenticator {
   }
   
   @Override
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
index 7709114..8c38ba6 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
@@ -940,7 +940,7 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
   }
 
   @Override
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
   }
 
   @Override
@@ -1177,7 +1177,7 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
           @Override
           public void run() {
             try {
-              services.memberSuspected(initiator, mbr);
+              services.memberSuspected(initiator, mbr, reason);
               long startTime = System.currentTimeMillis();
               // for some reason we used to update the timestamp for the member
               // with the startTime, but we don't want to do that because it looks

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Service.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Service.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Service.java
index 2f4a728..8465067 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Service.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Service.java
@@ -75,8 +75,9 @@ public interface Service {
   
   /**
    * a member is suspected of having crashed
+   * @param reason TODO
    */
-  void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect);
+  void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason);
 
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index ccc9d8c..e1821db 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -1301,7 +1301,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
   }
 
   @Override
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
     prepareProcessor.memberSuspected(initiator, suspect);
     viewProcessor.memberSuspected(initiator, suspect);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 326491a..36a6200 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -350,7 +350,7 @@ public class JGroupsMessenger implements Messenger {
   }
 
   @Override
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index bbe7ab3..93c14e2 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -1209,8 +1209,8 @@ public class GMSMembershipManager implements MembershipManager, Manager
   }
   
   @Override
-  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect) {
-    SuspectMember s = new SuspectMember(initiator, suspect);
+  public void memberSuspected(InternalDistributedMember initiator, InternalDistributedMember suspect, String reason) {
+    SuspectMember s = new SuspectMember(initiator, suspect, reason);
     handleOrDeferSuspect(s);
   }
 
@@ -1230,7 +1230,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
       InternalDistributedMember who = suspectInfo.whoSuspected;
       this.suspectedMembers.put(suspect, Long.valueOf(System.currentTimeMillis()));
       try {
-        listener.memberSuspect(suspect, who);
+        listener.memberSuspect(suspect, who, suspectInfo.reason);
       }
       catch (DistributedSystemDisconnectedException se) {
         // let's not get huffy about it

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java
index eb62468..6a31b50 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java
@@ -1428,7 +1428,7 @@ public
     }
     
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
index 5d263a6..92b585a 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
@@ -3805,7 +3805,7 @@ public class DistributedRegion extends LocalRegion implements
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     /** called when membership listeners are added after region creation */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java
index a37a39b..7777a33 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java
@@ -186,7 +186,7 @@ public class InitialImageFlowControl implements MembershipListener {
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
     //Do nothing
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java
index 3e21113..3abb0d6 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java
@@ -2206,7 +2206,7 @@ public class PRHARedundancyProvider
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     public void memberDeparted(InternalDistributedMember id, boolean crashed) {
@@ -2339,7 +2339,7 @@ public class PRHARedundancyProvider
     }
     
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     public void memberJoined(InternalDistributedMember id)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
index 48f4787..a36d719 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
@@ -9968,7 +9968,7 @@ public class PartitionedRegion extends LocalRegion implements
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     public synchronized void memberDeparted(InternalDistributedMember id,

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionHelper.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionHelper.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionHelper.java
index f4a20da..ef89c80 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionHelper.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionHelper.java
@@ -1086,7 +1086,7 @@ public class PartitionedRegionHelper
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
index d7caf66..e96d99d 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
@@ -237,7 +237,7 @@ public class SearchLoadAndWriteProcessor implements MembershipListener {
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
   
   public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXCommitMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXCommitMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXCommitMessage.java
index 9648503..e712943 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXCommitMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXCommitMessage.java
@@ -2027,7 +2027,7 @@ public class TXCommitMessage extends PooledDistributionMessage implements Member
   }
   
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
   
   public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXFarSideCMTracker.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXFarSideCMTracker.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXFarSideCMTracker.java
index c99d8ae..94e3059 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXFarSideCMTracker.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXFarSideCMTracker.java
@@ -211,7 +211,7 @@ public class TXFarSideCMTracker
         public void memberJoined(InternalDistributedMember id) {
         }
         public void memberSuspect(InternalDistributedMember id,
-            InternalDistributedMember whoSuspected) {
+            InternalDistributedMember whoSuspected, String reason) {
         }
         public void memberDeparted(InternalDistributedMember id, boolean crashed) {
           if (memberId.equals(id)) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXManagerImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXManagerImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXManagerImpl.java
index 994990b..f4216ac 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXManagerImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXManagerImpl.java
@@ -925,7 +925,7 @@ public final class TXManagerImpl implements CacheTransactionManager,
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
   
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionRebalanceOp.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionRebalanceOp.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionRebalanceOp.java
index 2b21982..a8d1350 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionRebalanceOp.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionRebalanceOp.java
@@ -644,7 +644,7 @@ public class PartitionedRegionRebalanceOp {
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
       // do nothing.
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/BackupManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/BackupManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/BackupManager.java
index 8f27736..1a5c765 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/BackupManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/BackupManager.java
@@ -352,7 +352,7 @@ public class BackupManager implements MembershipListener {
   }
 
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
   }
 
   public void waitForBackup() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistenceAdvisorImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistenceAdvisorImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistenceAdvisorImpl.java
index 21af700..168fbfc 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistenceAdvisorImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistenceAdvisorImpl.java
@@ -1186,7 +1186,7 @@ public class PersistenceAdvisorImpl implements PersistenceAdvisor {
     }
 
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistentMemberManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistentMemberManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistentMemberManager.java
index 87e956b..a6f6d64 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistentMemberManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/persistence/PersistentMemberManager.java
@@ -255,7 +255,7 @@ public class PersistentMemberManager {
 
     @Override
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) {
+        InternalDistributedMember whoSuspected, String reason) {
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
index 61423d1..27f3747 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
@@ -1364,7 +1364,7 @@ public abstract class RegionVersionVector<T extends VersionSource<?>> implements
 
 
   public void memberJoined(InternalDistributedMember id) { }
-  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected) {  }
+  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected, String reason) {  }
   public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {  }
 
   /* 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
index 30962e7..f918812 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
@@ -123,6 +123,9 @@ public class Connection implements Runnable {
   /** counter to give connections a unique id */
   private static AtomicLong idCounter = new AtomicLong(1);
 
+  /** string used as the reason for initiating suspect processing */
+  public static final String INITIATING_SUSPECT_PROCESSING = "member unexpectedly shut down shared, unordered connection";
+
   /** the table holding this connection */
   final ConnectionTable owner;
   
@@ -1954,9 +1957,8 @@ public class Connection implements Runnable {
   private void initiateSuspicionIfSharedUnordered() {
     if (this.isReceiver && this.handshakeRead && !this.preserveOrder && this.sharedResource) {
       if (this.owner.getConduit().getCancelCriterion().cancelInProgress() == null) {
-        String reason = "member unexpectedly shut down shared, unordered connection";
         this.owner.getDM().getMembershipManager().suspectMember(this.getRemoteAddress(),
-            reason);
+            INITIATING_SUSPECT_PROCESSING);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/FederatingManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/FederatingManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/FederatingManager.java
index d49589c..91e7b22 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/FederatingManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/FederatingManager.java
@@ -276,9 +276,10 @@ public class FederatingManager extends Manager {
    * block the membership listener
    * 
    * @param member
+   * @param reason TODO
    */
-  public void suspectMember(DistributedMember member, InternalDistributedMember whoSuspected) {
-    service.memberSuspect((InternalDistributedMember) member, whoSuspected);
+  public void suspectMember(DistributedMember member, InternalDistributedMember whoSuspected, String reason) {
+    service.memberSuspect((InternalDistributedMember) member, whoSuspected, reason);
 
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/ManagementMembershipListener.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/ManagementMembershipListener.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/ManagementMembershipListener.java
index 561981c..9a7c657 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/ManagementMembershipListener.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/ManagementMembershipListener.java
@@ -76,7 +76,7 @@ public class ManagementMembershipListener implements MembershipListener {
   }
 
   @Override
-  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected) {
+  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected, String reason) {
 
     if (logger.isDebugEnabled()) {
       logger.debug("ManagementMembershipListener member suspected .. {}", id.getId());
@@ -85,7 +85,7 @@ public class ManagementMembershipListener implements MembershipListener {
       if (logger.isDebugEnabled()) {
         logger.debug("Suspecting member {}", id.getId());
       }
-      service.getFederatingManager().suspectMember(id, whoSuspected);
+      service.getFederatingManager().suspectMember(id, whoSuspected, reason);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/SystemManagementService.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/SystemManagementService.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/SystemManagementService.java
index 7ac85b8..68209f2 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/SystemManagementService.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/SystemManagementService.java
@@ -729,9 +729,9 @@ public final class SystemManagementService extends BaseManagementService {
     }
   }
 
-  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected) {
+  public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected, String reason) {
     for (ProxyListener listener : proxyListeners) {
-      listener.memberSuspect(id, whoSuspected);
+      listener.memberSuspect(id, whoSuspected, reason);
     }
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MBeanAggregator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MBeanAggregator.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MBeanAggregator.java
index 8c096a4..a64e7f7 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MBeanAggregator.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/beans/MBeanAggregator.java
@@ -423,7 +423,7 @@ public class MBeanAggregator implements ProxyListener {
 
   @Override
   public void memberSuspect(InternalDistributedMember id,
-      InternalDistributedMember whoSuspected) {
+      InternalDistributedMember whoSuspected, String reason) {
     distributedSystemBridge.memberSuspect(id, whoSuspected);
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
index 5b12563..7d34ab1 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
@@ -20,6 +20,7 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.LineNumberReader;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -48,6 +49,7 @@ import com.gemstone.gemfire.internal.AvailablePort;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
 import com.gemstone.gemfire.internal.logging.InternalLogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
+import com.gemstone.gemfire.internal.tcp.Connection;
 
 import dunit.AsyncInvocation;
 import dunit.DistributedTestCase;
@@ -60,7 +62,6 @@ import dunit.VM;
  * Tests the ability of the {@link Locator} API to start and stop
  * locators running in remote VMs.
  *
- * @author David Whitlock
  * @since 4.0
  */
 public class LocatorDUnitTest extends DistributedTestCase {
@@ -581,6 +582,7 @@ public class LocatorDUnitTest extends DistributedTestCase {
       }
       // quorumLost should be invoked if we get a ForcedDisconnect in this situation
       assertTrue("expected quorumLost to be invoked", listener.quorumLostInvoked);
+      assertTrue("expected suspect processing initiated by TCPConduit", listener.suspectReasons.contains(Connection.INITIATING_SUSPECT_PROCESSING));
     }
     finally {
       if (locator != null) {
@@ -1882,11 +1884,14 @@ public class LocatorDUnitTest extends DistributedTestCase {
   }
   class MyMembershipListener implements MembershipListener {
     boolean quorumLostInvoked;
+    List<String> suspectReasons = new ArrayList<>(50);
     
     public void memberJoined(InternalDistributedMember id) {  }
     public void memberDeparted(InternalDistributedMember id, boolean crashed) { }
     public void memberSuspect(InternalDistributedMember id,
-        InternalDistributedMember whoSuspected) { }
+        InternalDistributedMember whoSuspected, String reason) {
+      suspectReasons.add(reason);
+    }
     public void quorumLost(Set<InternalDistributedMember> failures,
         List<InternalDistributedMember> remaining) {
       quorumLostInvoked = true;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1c423796/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
index e133625..44e1b46 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
@@ -233,10 +233,10 @@ public class GMSMembershipManagerJUnitTest {
 
     // suspect a member
     InternalDistributedMember suspectMember = mockMembers[1];
-    manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember));
+    manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember, "testing"));
     // suspect messages aren't queued - they're ignored before joining the system
     assertEquals(2, manager.getStartupEvents().size());
-    verify(listener, never()).memberSuspect(suspectMember, mockMembers[0]);
+    verify(listener, never()).memberSuspect(suspectMember, mockMembers[0], "testing");
 
     HighPriorityAckedMessage m = new HighPriorityAckedMessage();
     mockMembers[0].setVmViewId(1);
@@ -293,8 +293,8 @@ public class GMSMembershipManagerJUnitTest {
     // process a suspect now - it will be passed to the listener
     reset(listener);
     suspectMember = mockMembers[1];
-    manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember));
-    verify(listener).memberSuspect(suspectMember, mockMembers[0]);
+    manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember, "testing"));
+    verify(listener).memberSuspect(suspectMember, mockMembers[0], "testing");
     
     InternalDistributedMember mbr = manager.getMemberForStub(new Stub(myMemberId.getInetAddress(), 2033, 20), false);
     assertTrue(mbr == null);