Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-77 4addcea05 -> f57eb8b15


GEODE-77: faster initiation of suspect processing on crashed member
TCPConduit's Connection.java was not initiating suspect processing when a 
member crashed.  This was due to not having the check in the normal (amt < 0) 
check for a socket error.

In testing this fix with ReconnectDUnitTest I found that the change exposed 
some problems in GMSJoinLeave that were keeping reconnect from happening as 
fast as it should:

1. The reconnecting member was processing a RemoveMember message intended for 
its old incarnation.  This caused it to invoke forceDisconnect() but the 
concurrent join() attempt did not notice this and continued to try to connect 
until it timed out.

2. ViewCreator was removing the new member from the view if its old ID was 
being declared crashed in the same view because of the way 
InternalDistributedMember.compareTo() works with viewless identifiers.

This change-set also gets rid of a bunch of references to JGroups scattered 
around in the code and removes references to JGroups classes from 
GMSMembershipManager, moving the code requiring these refs to the quorum 
checker.


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

Branch: refs/heads/feature/GEODE-77
Commit: f57eb8b15e042e87576b117e093180bba256f90f
Parents: 4addcea
Author: Bruce Schuchardt <[email protected]>
Authored: Fri Nov 13 11:44:00 2015 -0800
Committer: Bruce Schuchardt <[email protected]>
Committed: Fri Nov 13 11:45:34 2015 -0800

----------------------------------------------------------------------
 .../internal/DistributionMessage.java           |  2 +-
 .../distributed/internal/ReplyMessage.java      |  2 +-
 .../distributed/internal/ShutdownMessage.java   |  2 +-
 .../distributed/internal/StartupMessage.java    |  2 +-
 .../internal/StartupResponseMessage.java        |  2 +-
 .../internal/WaitForViewInstallation.java       |  2 +-
 .../internal/membership/QuorumChecker.java      |  7 +++
 .../internal/membership/gms/GMSMember.java      |  2 +-
 .../membership/gms/GMSMemberFactory.java        |  2 +-
 .../membership/gms/fd/GMSHealthMonitor.java     |  7 +--
 .../membership/gms/membership/GMSJoinLeave.java | 20 ++++--
 .../gms/messenger/GMSQuorumChecker.java         | 10 ++-
 .../gms/mgr/GMSMembershipManager.java           | 64 +++++++++-----------
 .../internal/admin/remote/AdminResponse.java    |  2 +-
 .../admin/remote/AlertListenerMessage.java      |  2 +-
 .../admin/remote/FetchStatsResponse.java        |  2 +-
 .../admin/remote/FetchSysCfgRequest.java        |  2 +-
 .../admin/remote/HealthListenerMessage.java     |  2 +-
 .../admin/remote/ShutdownAllRequest.java        |  2 +-
 .../admin/remote/ShutdownAllResponse.java       |  2 +-
 .../admin/remote/SnapshotResultMessage.java     |  2 +-
 .../admin/remote/StatListenerMessage.java       |  2 +-
 .../internal/cache/CloseCacheMessage.java       |  2 +-
 .../internal/cache/CreateRegionProcessor.java   |  4 +-
 .../internal/cache/FindRemoteTXMessage.java     |  2 +-
 .../cache/UpdateAttributesProcessor.java        |  2 +-
 .../partitioned/BucketProfileUpdateMessage.java |  2 +-
 .../cache/partitioned/FetchEntriesMessage.java  | 11 ++--
 .../gemfire/internal/i18n/LocalizedStrings.java |  4 +-
 .../internal/i18n/ParentLocalizedStrings.java   |  6 +-
 .../gemfire/internal/tcp/Connection.java        | 21 ++++---
 .../management/internal/JmxManagerAdvisor.java  |  2 +-
 .../cli/commands/DiskStoreCommands.java         |  7 ++-
 .../membership/gms/MembershipManagerHelper.java |  1 +
 .../fd/GMSHealthMonitorJUnitTest.java           |  3 +
 .../java/dunit/standalone/ProcessManager.java   |  8 ++-
 36 files changed, 124 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java
index 83ef91d..551e47d 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java
@@ -234,7 +234,7 @@ public abstract class DistributionMessage
    * direct-channel.  This is typically only done for messages that are
    * broadcast to the full membership set.
    */
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return false;
   }
   /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyMessage.java
index 98d2365..96ca5ef 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyMessage.java
@@ -64,7 +64,7 @@ public class ReplyMessage extends 
HighPriorityDistributionMessage  {
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return this.sendViaJGroups;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ShutdownMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ShutdownMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ShutdownMessage.java
index bdf3599..b96850e 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ShutdownMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ShutdownMessage.java
@@ -42,7 +42,7 @@ public final class ShutdownMessage extends 
HighPriorityDistributionMessage imple
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
index 4bdf99f..612d3fa 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
@@ -142,7 +142,7 @@ public final class StartupMessage extends 
HighPriorityDistributionMessage implem
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupResponseMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupResponseMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupResponseMessage.java
index c9b6baf..762c111 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupResponseMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupResponseMessage.java
@@ -129,7 +129,7 @@ public class StartupResponseMessage extends 
HighPriorityDistributionMessage impl
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java
index 1ba0ed1..6cd0912 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java
@@ -64,7 +64,7 @@ public class WaitForViewInstallation extends 
HighPriorityDistributionMessage
   }
 
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/QuorumChecker.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/QuorumChecker.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/QuorumChecker.java
index 3d8d261..32e68d5 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/QuorumChecker.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/QuorumChecker.java
@@ -42,6 +42,13 @@ public interface QuorumChecker {
    * resumes the quorum checker after having invoked suspend();
    */
   public void resume();
+  
+  /**
+   * closes the quorum checker and releases resources.  Use this if
+   * the distributed system is not going to be reconnected and you
+   * want to release resources.
+   */
+  public void close();
 
   /**
    * Get the membership info from the old system that needs to be passed

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
index 51a166b..c92ff7d 100755
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
@@ -217,7 +217,7 @@ public class GMSMember implements NetMember, 
DataSerializableFixedID {
     }
     // obligatory type check
     if (o == null || !(o instanceof GMSMember) ) {
-      throw new 
ClassCastException(LocalizedStrings.JGroupMember_JGROUPMEMBERCOMPARETO_COMPARISON_BETWEEN_DIFFERENT_CLASSES.toLocalizedString());
+      throw new 
ClassCastException(LocalizedStrings.Member_MEMBERCOMPARETO_COMPARISON_BETWEEN_DIFFERENT_CLASSES.toLocalizedString());
     }
     byte[] myAddr = inetAddr.getAddress();
     GMSMember his = (GMSMember)o;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
index 59f9deb..36311a2 100755
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
@@ -116,7 +116,7 @@ public class GMSMemberFactory implements MemberServices {
       services.start();
     }
     catch (ConnectionException e) {
-      throw new 
DistributionException(LocalizedStrings.JGroupMemberFactory_UNABLE_TO_CREATE_MEMBERSHIP_MANAGER.toLocalizedString(),
 e);
+      throw new 
DistributionException(LocalizedStrings.MemberFactory_UNABLE_TO_CREATE_MEMBERSHIP_MANAGER.toLocalizedString(),
 e);
     }
     catch (GemFireConfigException
         | SystemConnectException

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/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 84eca62..da42ddb 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
@@ -977,11 +977,8 @@ public class GMSHealthMonitor implements HealthMonitor, 
MessageHandler {
     
     // only respond if the intended recipient is this member
     InternalDistributedMember me = localAddress;
-    // TODO the first part of this check should be removed.
-    // because a restarted server will probably have the same
-    // membership port as it had in its last incarnation, causing
-    // delays in removing the old member ID from the view.
-    if (me.getVmViewId() < 0 || m.getTarget().equals(me)) {
+
+    if (me.getVmViewId() >= 0  &&  m.getTarget().equals(me)) {
       HeartbeatMessage prm = new HeartbeatMessage(m.getRequestId());
       prm.setRecipient(m.getSender());
       Set<InternalDistributedMember> membersNotReceivedMsg = 
services.getMessenger().send(prm);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/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 500131b..a7ffe18 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
@@ -222,7 +222,7 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
       long locatorGiveUpTime = startTime + locatorWaitTime;
       long giveupTime = startTime + timeout;
 
-      for (int tries=0; !this.isJoined; tries++) {
+      for (int tries=0; !this.isJoined && !this.isStopping; tries++) {
         logger.debug("searching for the membership coordinator");
         boolean found = findCoordinator();
         if (found) {
@@ -489,6 +489,11 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
       logger.info("Membership ignoring removal request for " + mbr + " from 
non-member " + incomingRequest.getSender());
       return;
     }
+    
+    if (v == null) {
+      // not yet a member
+      return;
+    }
 
     logger.info("Membership received a request to remove " + mbr
         + " from " + incomingRequest.getSender() 
@@ -1103,7 +1108,7 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
           return;
         }
       }
-
+      
       if (isJoined && isNetworkPartition(newView, true)) {
         if (quorumRequired) {
           Set<InternalDistributedMember> crashes = 
newView.getActualCrashedMembers(currentView);
@@ -1352,6 +1357,7 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
   @Override
   public void memberShutdown(DistributedMember mbr, String reason) {
     LeaveRequestMessage msg = new 
LeaveRequestMessage(Collections.singleton(this.localAddress), 
(InternalDistributedMember)mbr, reason);
+    msg.setSender((InternalDistributedMember)mbr);
     processLeaveRequest(msg);
   }
 
@@ -1806,7 +1812,7 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
           }
           break;
         case REMOVE_MEMBER_REQUEST:
-          // process these after gathring all leave-requests so that
+          // process these after gathering all leave-requests so that
           // we don't kick out a member that's shutting down
           break;
         default:
@@ -1850,14 +1856,16 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
         int viewNumber = 0;
         List<InternalDistributedMember> mbrs;
         if (currentView == null) {
-          mbrs = new ArrayList<InternalDistributedMember>(joinReqs);
+          mbrs = new ArrayList<InternalDistributedMember>();
         } else {
           viewNumber = currentView.getViewId() + 1;
           mbrs = new ArrayList<InternalDistributedMember>(oldMembers);
-          mbrs.addAll(joinReqs);
         }
         mbrs.removeAll(leaveReqs);
         mbrs.removeAll(removalReqs);
+        // add joinReqs after removing old members because an ID may
+        // be reused in an auto-reconnect and get a new vmViewID
+        mbrs.addAll(joinReqs);
         newView = new NetView(localAddress, viewNumber, mbrs, leaveReqs, new 
HashSet<InternalDistributedMember>(removalReqs));
         int size = joinReqs.size();
         for (InternalDistributedMember mbr: joinReqs) {
@@ -1888,7 +1896,7 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
 
       // if there are no membership changes then abort creation of
       // the new view
-      if (newView.getMembers().equals(currentView.getMembers())) {
+      if (joinReqs.isEmpty() && 
newView.getMembers().equals(currentView.getMembers())) {
         logger.info("membership hasn't changed - aborting new view {}", 
newView);
         return;
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
index cf3fc6b..f8b5f28 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
@@ -91,8 +91,14 @@ public class GMSQuorumChecker implements QuorumChecker {
 
   @Override
   public void suspend() {
-    // TODO Auto-generated method stub
-
+    // NO-OP for this implementation
+  }
+  
+  @Override
+  public void close() {
+    if (channel != null  &&  !channel.isClosed()) {
+      channel.close();
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/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 4c5718f..79af74e 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
@@ -29,7 +29,6 @@ import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.apache.logging.log4j.Logger;
-import org.jgroups.JChannel;
 
 import com.gemstone.gemfire.CancelException;
 import com.gemstone.gemfire.ForcedDisconnectException;
@@ -108,11 +107,11 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   private volatile QuorumChecker quorumChecker;
   
   /**
-   * thread-local used to force use of JGroups for communications, usually to
+   * thread-local used to force use of Messenger for communications, usually to
    * avoid deadlock when conserve-sockets=true.  Use of this should be removed
    * when connection pools are implemented in the direct-channel 
    */
-  private ThreadLocal<Boolean> forceUseJGroups = new ThreadLocal<Boolean>();
+  private ThreadLocal<Boolean> forceUseUDPMessaging = new 
ThreadLocal<Boolean>();
   
   /**
    * Trick class to make the startup synch more
@@ -268,7 +267,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   
   /**
    * This is the latest view (ordered list of DistributedMembers) 
-   * that has been returned from Jgroups
+   * that has been installed
    * 
    * All accesses to this object are protected via {@link #latestViewLock}
    */
@@ -302,8 +301,8 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   
   volatile boolean isJoining;
   
-  /** has the jgroups channel been connected successfully? */
-  volatile boolean hasConnected;
+  /** have we joined successfully? */
+  volatile boolean hasJoined;
   
   /**
    * a map keyed on InternalDistributedMember, values are Stubs that represent 
direct
@@ -340,7 +339,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
 
   /**
    * Members that have sent a shutdown message.  This is used to suppress
-   * suspect processing in JGroups that otherwise becomes pretty aggressive 
+   * suspect processing that otherwise becomes pretty aggressive 
    * when a member is shutting down.
    */
   private final Map shutdownMembers = new BoundedLinkedHashMap(1000);
@@ -356,7 +355,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   /**
    * The identities and birth-times of others that we have allowed into
    * membership at the distributed system level, but have not yet appeared
-   * in a jgroups view.
+   * in a view.
    * <p>
    * Keys are instances of {@link InternalDistributedMember}, values are 
    * Longs indicating the time this member was shunned.
@@ -415,7 +414,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   protected volatile boolean processingEvents = false;
   
   /**
-   * This is the latest viewId received from JGroups
+   * This is the latest viewId installed
    */
   long latestViewId = -1;
   
@@ -595,7 +594,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
       for (int i = 0; i < newView.getMembers().size(); i++) { // additions
         InternalDistributedMember m = 
(InternalDistributedMember)newView.getMembers().get(i);
         
-        // Once a member has been seen via JGroups, remove them from the
+        // Once a member has been seen via a view, remove them from the
         // newborn set
         boolean wasSurprise = surpriseMembers.remove(m) != null;
         
@@ -678,7 +677,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
         }
         
         if (surpriseMembers.containsKey(m)) {
-          continue; // member has not yet appeared in JGroups view
+          continue; // member has not yet appeared in a view
         }
 
         try {
@@ -686,7 +685,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
               
LocalizedStrings.GroupMembershipService_MEMBERSHIP_PROCESSING_DEPARTING_MEMBER__0_,
 m));
           removeWithViewLock(m,
               newView.getCrashedMembers().contains(m) || 
suspectedMembers.containsKey(m)
-              , "departed JGroups view");
+              , "departed membership view");
         }
         catch (VirtualMachineError err) {
           SystemFailure.initiateFailure(err);
@@ -797,7 +796,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
         long delta = System.currentTimeMillis() - start;
 
         logger.info(LogMarker.DISTRIBUTION, LocalizedMessage.create(
-            
LocalizedStrings.GroupMembershipService_CONNECTED_TO_JGROUPS_CHANNEL_TOOK__0__MS,
 delta));
+            LocalizedStrings.GroupMembershipService_JOINED_TOOK__0__MS, 
delta));
 
         NetView initialView = services.getJoinLeave().getView();
         latestView = new NetView(initialView, initialView.getViewId());
@@ -810,7 +809,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
         if (ex.getCause() != null && ex.getCause().getCause() instanceof 
SystemConnectException) {
           throw (SystemConnectException)(ex.getCause().getCause());
         }
-        throw new 
DistributionException(LocalizedStrings.GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_CONNECTING_TO_JGROUPS.toLocalizedString(),
 ex);
+        throw new 
DistributionException(LocalizedStrings.GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_JOINING.toLocalizedString(),
 ex);
       }
       finally {
         this.isJoining = false;
@@ -899,7 +898,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
       stubToMemberMap.put(stub, address);
     }
 
-    this.hasConnected = true;
+    this.hasJoined = true;
 
     // in order to debug startup issues we need to announce the membership
     // ID as soon as we know it
@@ -1078,7 +1077,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   
   /**
    * Logic for handling a direct connection event (message received
-   * from a member not in the JGroups view).  Does not employ the
+   * from a member not in the view).  Does not employ the
    * startup queue.
    * <p>
    * Must be called with {@link #latestViewLock} held.  Waits
@@ -1131,7 +1130,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
       }
 
       // Adding him to this set ensures we won't remove him if a new
-      // JGroups view comes in and he's still not visible.
+      // view comes in and he's still not visible.
       surpriseMembers.put(member, Long.valueOf(System.currentTimeMillis()));
 
       if (shutdownInProgress()) {
@@ -1185,7 +1184,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
 
         // However, we put the new member at the end of the list.  This
         // should ensure he's not chosen as an elder.
-        // This will get corrected when he finally shows up in the JGroups
+        // This will get corrected when he finally shows up in the
         // view.
         NetView newMembers = new NetView(latestView, latestView.getViewId());
         newMembers.add(member);
@@ -1336,7 +1335,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
    */
   protected void handleOrDeferViewEvent(NetView viewArg) {
     if (this.isJoining) {
-      // bug #44373 - queue all view messages while connecting the jgroups 
channel.
+      // bug #44373 - queue all view messages while joining.
       // This is done under the latestViewLock, but we can't block here because
       // we're sitting in the UDP reader thread.
       synchronized(startupLock) {
@@ -1353,7 +1352,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
         }
       }
       // view processing can take a while, so we use a separate thread
-      // to avoid blocking the jgroups stack
+      // to avoid blocking a reader thread
       NetView newView = viewArg;
       long newId = viewArg.getViewId();
       if (logger.isTraceEnabled(LogMarker.DM_VIEWS)) {
@@ -1660,8 +1659,8 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   protected static volatile boolean inhibitForceDisconnectLogging;
   
   /**
-   * Ensure that the critical classes from JGroups and the TCP conduit
-   * implementation get loaded.
+   * Ensure that the critical classes from components
+   * get loaded.
    * 
    * @see SystemFailure#loadEmergencyClasses()
    */
@@ -1897,7 +1896,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   }
   
   public void suspectMember(DistributedMember mbr, String reason) {
-    if (mbr != null && !this.shutdownMembers.containsKey(mbr)) {
+    if (!this.shutdownInProgress && !this.shutdownMembers.containsKey(mbr)) {
       this.services.getHealthMonitor().suspect((InternalDistributedMember)mbr, 
reason);
     }
   }
@@ -2032,7 +2031,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
    * @see 
com.gemstone.gemfire.distributed.internal.membership.MembershipManager#isConnected()
    */
   public boolean isConnected() {
-    return (this.hasConnected && !this.shutdownInProgress); 
+    return (this.hasJoined && !this.shutdownInProgress); 
   }
   
   /**
@@ -2040,9 +2039,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
    * Otherwise returns false.
    */
   public boolean isReconnectingDS() {
-    if (this.hasConnected) {
-      // if the jgroups channel has been connected then we aren't in the
-      // middle of a reconnect attempt in this instance of the distributed 
system
+    if (this.hasJoined) {
       return false;
     } else {
       return this.wasReconnectingSystem;
@@ -2068,10 +2065,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
     ((GMSQuorumChecker)checker).suspend();
     InternalDistributedSystem system = 
InternalDistributedSystem.getAnyInstance();
     if (system == null || !system.isConnected()) {
-      JChannel channel = (JChannel)checker.getMembershipInfo();
-      if (channel != null  &&  !channel.isClosed()) {
-        channel.close();
-      }
+      checker.close();
     }
   }
   
@@ -2145,9 +2139,9 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
       useMcast = (msg.getMulticast() || allDestinations);
     }
     
-    boolean sendViaJGroups = isForceUDPCommunications(); // enable when bug 
#46438 is fixed: || msg.sendViaJGroups();
+    boolean sendViaMessenger = isForceUDPCommunications(); // enable when bug 
#46438 is fixed: || msg.sendViaUDP();
 
-    if (useMcast || tcpDisabled || sendViaJGroups) {
+    if (useMcast || tcpDisabled || sendViaMessenger) {
       result = services.getMessenger().send(msg);
     }
     else {
@@ -2165,11 +2159,11 @@ public class GMSMembershipManager implements 
MembershipManager, Manager
   // MembershipManager method
   @Override
   public void forceUDPMessagingForCurrentThread() {
-    forceUseJGroups.set(null);
+    forceUseUDPMessaging.set(null);
   }
   
   private boolean isForceUDPCommunications() {
-    Boolean forced = forceUseJGroups.get();
+    Boolean forced = forceUseUDPMessaging.get();
     return forced == Boolean.TRUE;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AdminResponse.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AdminResponse.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AdminResponse.java
index cc5707e..14a201c 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AdminResponse.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AdminResponse.java
@@ -47,7 +47,7 @@ public abstract class AdminResponse extends 
HighPriorityDistributionMessage
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AlertListenerMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AlertListenerMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AlertListenerMessage.java
index 6f0f0c1..5892d35 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AlertListenerMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/AlertListenerMessage.java
@@ -105,7 +105,7 @@ public final class AlertListenerMessage extends 
PooledDistributionMessage implem
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchStatsResponse.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchStatsResponse.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchStatsResponse.java
index a4991f8..22003d1 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchStatsResponse.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchStatsResponse.java
@@ -80,7 +80,7 @@ public final class FetchStatsResponse extends AdminResponse {
 
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchSysCfgRequest.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchSysCfgRequest.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchSysCfgRequest.java
index 156b853..5f9db76 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchSysCfgRequest.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/FetchSysCfgRequest.java
@@ -41,7 +41,7 @@ public final class FetchSysCfgRequest extends AdminRequest {
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/HealthListenerMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/HealthListenerMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/HealthListenerMessage.java
index 28261ee..2047821 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/HealthListenerMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/HealthListenerMessage.java
@@ -62,7 +62,7 @@ public final class HealthListenerMessage extends 
PooledDistributionMessage imple
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java
index 122b94c..ffe1ddf 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java
@@ -137,7 +137,7 @@ public class ShutdownAllRequest extends AdminRequest {
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllResponse.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllResponse.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllResponse.java
index f467a99..ad36a9a 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllResponse.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllResponse.java
@@ -37,7 +37,7 @@ public class ShutdownAllResponse extends AdminResponse {
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/SnapshotResultMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/SnapshotResultMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/SnapshotResultMessage.java
index 6820831..a19447f 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/SnapshotResultMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/SnapshotResultMessage.java
@@ -48,7 +48,7 @@ public final class SnapshotResultMessage extends 
PooledDistributionMessage
   }
 
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/StatListenerMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/StatListenerMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/StatListenerMessage.java
index f97c45d..acd980d 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/StatListenerMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/StatListenerMessage.java
@@ -85,7 +85,7 @@ public final class StatListenerMessage extends 
PooledDistributionMessage
   }
 
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CloseCacheMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CloseCacheMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CloseCacheMessage.java
index 4aa37b2..edd4db2 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CloseCacheMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CloseCacheMessage.java
@@ -50,7 +50,7 @@ public final class CloseCacheMessage extends 
HighPriorityDistributionMessage
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java
index f4ac672..bfd287e 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java
@@ -347,7 +347,7 @@ public class CreateRegionProcessor implements 
ProfileExchangeProcessor {
     }
 
     @Override
-    public boolean sendViaJGroups() {
+    public boolean sendViaUDP() {
       return true;
     }
     
@@ -807,7 +807,7 @@ public class CreateRegionProcessor implements 
ProfileExchangeProcessor {
     }
 
     @Override
-    public boolean sendViaJGroups() {
+    public boolean sendViaUDP() {
       return true;
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/FindRemoteTXMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/FindRemoteTXMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/FindRemoteTXMessage.java
index f0e9de7..bf96551 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/FindRemoteTXMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/FindRemoteTXMessage.java
@@ -230,7 +230,7 @@ public class FindRemoteTXMessage extends 
HighPriorityDistributionMessage impleme
   }
   
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/UpdateAttributesProcessor.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/UpdateAttributesProcessor.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/UpdateAttributesProcessor.java
index 4aed85e..c81eac1 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/UpdateAttributesProcessor.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/UpdateAttributesProcessor.java
@@ -277,7 +277,7 @@ public class UpdateAttributesProcessor {
     }
     
     @Override
-    public boolean sendViaJGroups() {
+    public boolean sendViaUDP() {
       return true;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/BucketProfileUpdateMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/BucketProfileUpdateMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/BucketProfileUpdateMessage.java
index 7325789..aa7bacc 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/BucketProfileUpdateMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/BucketProfileUpdateMessage.java
@@ -77,7 +77,7 @@ public final class BucketProfileUpdateMessage extends 
DistributionMessage
   }
 
   @Override
-  public boolean sendViaJGroups() {
+  public boolean sendViaUDP() {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
index d8767e6..ef22609 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
@@ -568,10 +568,13 @@ public final class FetchEntriesMessage extends 
PartitionMessage
               VersionTag versionTag = DataSerializer.readObject(in);
               
               //Fix for 47260 - canonicalize the mebmer ids to avoid an OOME
-              if(canonicalMembers.containsKey(versionTag.getMemberID())) {
-                
versionTag.setMemberID(canonicalMembers.get(versionTag.getMemberID()));
-              } else {
-                canonicalMembers.put(versionTag.getMemberID(), 
versionTag.getMemberID());
+              VersionSource id = versionTag.getMemberID();
+              if (id != null) {
+                if(canonicalMembers.containsKey(id)) {
+                  versionTag.setMemberID(canonicalMembers.get(id));
+                } else {
+                  canonicalMembers.put(id, id);
+                }
               }
               
               synchronized(returnValue) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
index dc02e36..f6edb9b 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
@@ -67,7 +67,7 @@ public class LocalizedStrings extends ParentLocalizedStrings {
   public static final StringId 
MessageFactory_COULD_NOT_ACCESS_ZEROARG_CONSTRUCTOR_OF_0 = new StringId(3435, 
"Could not access zero-arg constructor of  {0}");
   public static final StringId 
GroupMembershipService_AN_IOEXCEPTION_WAS_THROWN_WHILE_OPENING_0 = new 
StringId(3436, "An IOException was thrown while opening \"{0}\"");
   public static final StringId 
GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_READING_JGROUPS_CONFIG = 
new StringId(3437, "An Exception was thrown while reading JGroups config.");
-  public static final StringId 
GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_CONNECTING_TO_JGROUPS = 
new StringId(3438, "An Exception was thrown while connecting to Jgroups.");
+  public static final StringId 
GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_JOINING = new 
StringId(3438, "An Exception was thrown while attempting to join the 
distributed system.");
   public static final StringId 
InternalInstantiator_CANNOT_UNREGISTER_A_NULL_CLASS = new StringId(3439, 
"Cannot unregister a null class");
   public static final StringId 
StatisticDescriptorImpl_THE_STATISTIC_0_WITH_ID_1_IS_OF_TYPE_2_AND_IT_WAS_EXPECTED_TO_BE_AN_INT
 = new StringId(3440, "The statistic  {0}  with id  {1}  is of type  {2}  and 
it was expected to be an int.");
   public static final StringId 
StatisticDescriptorImpl_THE_STATISTIC_0_WITH_ID_1_IS_OF_TYPE_2_AND_IT_WAS_EXPECTED_TO_BE_A_DOUBLE
 = new StringId(3441, "The statistic  {0}  with id  {1}  is of type  {2}  and 
it was expected to be a double.");
@@ -188,7 +188,7 @@ public class LocalizedStrings extends 
ParentLocalizedStrings {
   public static final StringId MemberAttributes_IOEXCEPTION_ON_A_BYTE_ARRAY_0 
= new StringId(3553, "IOException on a byte array:  {0}");
   public static final StringId 
MemberAttributes_CLASSNOTFOUNDEXCEPTION_IN_DESERIALIZATION_0 = new 
StringId(3554, "ClassNotFoundException in deserialization:  {0}");
   public static final StringId GroupMembershipService_UNKNOWN_STARTUP_EVENT_0 
= new StringId(3555, "unknown startup event:  {0}");
-  public static final StringId 
JGroupMember_ATTEMPT_TO_EXTERNALIZE_NULL_IP_ADDRESS = new StringId(3556, 
"attempt to externalize null ip address");
+  // 3556 available for reuse
   public static final StringId UpdateOperation_UNKNOWN_DESERIALIZATION_POLICY 
= new StringId(3557, "unknown deserialization policy");
   public static final StringId 
UpdateOperation_UNKNOWN_DESERIALIZATION_POLICY_0 = new StringId(3558, "unknown 
deserialization policy:  {0}");
   public static final StringId 
QueuedOperation_CACHEWRITER_SHOULD_NOT_BE_CALLED = new StringId(3559, 
"CacheWriter should not be called");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/ParentLocalizedStrings.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/ParentLocalizedStrings.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/ParentLocalizedStrings.java
index 0e6cdcd..150b408 100755
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/ParentLocalizedStrings.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/ParentLocalizedStrings.java
@@ -719,7 +719,7 @@ class ParentLocalizedStrings {
   public static final StringId Invalid_0_INVALID_MESSAGE_TYPE_WITH_TX_1_FROM_2 
= new StringId(1711, "{0}: INVALID message type with tx: {1} from {2}");
   // ok to reuse 1712
   public static final StringId 
JCAConnectionManagerImpl_EXCEPTION_CAUGHT_WHILE_INITIALIZING = new 
StringId(1713, "JCAConnectionManagerImpl::Constructor: An exception was caught 
while initialising due to {0}" );
-  public static final StringId 
GroupMembershipService_CONNECTED_TO_JGROUPS_CHANNEL_TOOK__0__MS = new 
StringId(1714, "Connected to Jgroups channel (took  {0}  ms)");
+  public static final StringId GroupMembershipService_JOINED_TOOK__0__MS = new 
StringId(1714, "Joined the distributed system (took  {0}  ms)");
   public static final StringId 
GroupMembershipService_FAILED_TO_SEND_MESSAGE_0_TO_MEMBER_1_VIEW_2 = new 
StringId(1715, "Failed to send message <{0}> to member <{1}> view = {2}");
   // ok to reuse 1716
   // ok to reuse 1717
@@ -1807,8 +1807,8 @@ class ParentLocalizedStrings {
   public static final StringId InvalidateMessage_FAILED_SENDING_0 = new 
StringId(2798, "Failed sending < {0} >");
   public static final StringId InvalidateMessage_NO_RESPONSE_CODE_RECEIVED = 
new StringId(2799, "no response code received");
   public static final StringId 
JCAConnectionManagerImpl_JCACONNECTIONMANAGERIMPLALLOCATECONNECTIONNO_VALID_CONNECTION_AVAILABLE
 = new StringId(2800, "JCAConnectionManagerImpl::allocateConnection::No valid 
Connection available");
-  public static final StringId 
JGroupMemberFactory_UNABLE_TO_CREATE_MEMBERSHIP_MANAGER = new StringId(2801, 
"Unable to create membership manager");
-  public static final StringId 
JGroupMember_JGROUPMEMBERCOMPARETO_COMPARISON_BETWEEN_DIFFERENT_CLASSES = new 
StringId(2802, "JGroupMember.compareTo(): comparison between different 
classes");
+  public static final StringId 
MemberFactory_UNABLE_TO_CREATE_MEMBERSHIP_MANAGER = new StringId(2801, "Unable 
to create membership manager");
+  public static final StringId 
Member_MEMBERCOMPARETO_COMPARISON_BETWEEN_DIFFERENT_CLASSES = new 
StringId(2802, "NetMember.compareTo(): comparison between different classes");
   public static final StringId GroupMembershipService_CANNOT_FIND_0 = new 
StringId(2803, "Cannot find  {0}");
   public static final StringId GroupMembershipService_CHANNEL_CLOSED = new 
StringId(2804, "Channel closed");
   public static final StringId GroupMembershipService_CHANNEL_FAILURE = new 
StringId(2805, "Channel failure");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/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 700e495..b6b1f8b 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
@@ -1856,6 +1856,7 @@ public class Connection implements Runnable {
             continue;
           }
           if (amt < 0) {
+            initiateSuspicionIfSharedUnordered();
             this.readerShuttingDown = true;
             try {
               requestClose("SocketChannel.read returned EOF");
@@ -1893,14 +1894,14 @@ public class Connection implements Runnable {
         }
         catch (ClosedChannelException e) {
           this.readerShuttingDown = true;
-          initiateSuspicionIfShared();
+          initiateSuspicionIfSharedUnordered();
           try { 
             
requestClose(LocalizedStrings.Connection_CLOSEDCHANNELEXCEPTION_IN_CHANNEL_READ_0.toLocalizedString(e));
           } catch (Exception ex) {}
           return;
         }
         catch (IOException e) {
-          initiateSuspicionIfShared();
+          initiateSuspicionIfSharedUnordered();
           if (! isSocketClosed()
                 && !"Socket closed".equalsIgnoreCase(e.getMessage()) // needed 
for Solaris jdk 1.4.2_08
                 ) {
@@ -1924,7 +1925,7 @@ public class Connection implements Runnable {
           if (!stopped && ! isSocketClosed() ) {
             
logger.fatal(LocalizedMessage.create(LocalizedStrings.Connection_0_EXCEPTION_IN_CHANNEL_READ,
 p2pReaderName()), e);
           }
-          initiateSuspicionIfShared();
+          initiateSuspicionIfSharedUnordered();
           this.readerShuttingDown = true;
           try { 
             
requestClose(LocalizedStrings.Connection_0_EXCEPTION_IN_CHANNEL_READ.toLocalizedString(e));
 
@@ -1946,11 +1947,12 @@ public class Connection implements Runnable {
   }
 
   /** initiate suspect processing if a shared/ordered connection is lost and 
we're not shutting down */
-  private void initiateSuspicionIfShared() {
-    if (this.isReceiver && this.handshakeRead && this.preserveOrder && 
this.sharedResource) {
+  private void initiateSuspicionIfSharedUnordered() {
+    if (this.isReceiver && this.handshakeRead && !this.preserveOrder && 
this.sharedResource) {
       if (this.owner.getConduit().getCancelCriterion().cancelInProgress() == 
null) {
-            
this.owner.getDM().getMembershipManager().suspectMember(this.getRemoteAddress(),
-            "member shut down shared/ordered connection");
+        String reason = "member shut down shared unordered connection";
+        
this.owner.getDM().getMembershipManager().suspectMember(this.getRemoteAddress(),
+            reason);
       }
     }
   }
@@ -2089,6 +2091,7 @@ public class Connection implements Runnable {
         }
         int len = 0;
         if (readFully(input, lenbytes, lenbytes.length) < 0) {
+          initiateSuspicionIfSharedUnordered();
           stopped = true;
           continue;
         }
@@ -2445,7 +2448,7 @@ public class Connection implements Runnable {
         this.stopped = true;
       }
       catch (IOException io) {
-        initiateSuspicionIfShared();
+        initiateSuspicionIfSharedUnordered();
         boolean closed = isSocketClosed()
                 || "Socket closed".equalsIgnoreCase(io.getMessage()); // 
needed for Solaris jdk 1.4.2_08
         if (!closed) {
@@ -2479,7 +2482,7 @@ public class Connection implements Runnable {
         if (!stopped && !(e instanceof InterruptedException) ) {
           
logger.fatal(LocalizedMessage.create(LocalizedStrings.Connection_0_EXCEPTION_RECEIVED,
 p2pReaderName()), e);
         }
-        initiateSuspicionIfShared();
+        initiateSuspicionIfSharedUnordered();
         if (isSocketClosed()) {
           stopped = true;
         }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerAdvisor.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerAdvisor.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerAdvisor.java
index 4e0518c..e47400d 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerAdvisor.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerAdvisor.java
@@ -154,7 +154,7 @@ public class JmxManagerAdvisor extends DistributionAdvisor {
     public JmxManagerProfileMessage() {}
     
     @Override
-    public boolean sendViaJGroups() {
+    public boolean sendViaUDP() {
       return true;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommands.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommands.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommands.java
index 9df08d0..f724921 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommands.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommands.java
@@ -1189,7 +1189,10 @@ public class DiskStoreCommands extends 
AbstractCommandsSupport {
       }
       
       //Pass any java options on to the command
-      commandList.add(System.getenv("JAVA_OPTS"));
+      String opts = System.getenv("JAVA_OPTS");
+      if (opts != null) {
+        commandList.add(opts);
+      }
       commandList.add("-classpath");
       commandList.add(System.getProperty("java.class.path", "."));
       commandList.add(DiskStoreValidater.class.getName());
@@ -1219,6 +1222,8 @@ public class DiskStoreCommands extends 
AbstractCommandsSupport {
       return ResultBuilder
           
.createGemFireErrorResult(CliStrings.format(CliStrings.VALIDATE_DISK_STORE__MSG__IO_ERROR,diskStoreName,
 ex.getMessage() ));
     } catch (Exception ex) {
+//      StringPrintWriter s = new StringPrintWriter();
+//      ex.printStackTrace(s);
       return 
ResultBuilder.createGemFireErrorResult(CliStrings.format(CliStrings.VALIDATE_DISK_STORE__MSG__ERROR,diskStoreName,
 ex.getMessage()));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/MembershipManagerHelper.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/MembershipManagerHelper.java
 
b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/MembershipManagerHelper.java
index b2c67e0..c5141de 100644
--- 
a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/MembershipManagerHelper.java
+++ 
b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/MembershipManagerHelper.java
@@ -154,6 +154,7 @@ public class MembershipManagerHelper
   }
   
   public static void crashDistributedSystem(final DistributedSystem msys) {
+    msys.getLogWriter().info("crashing distributed system: " + msys);
     MembershipManagerHelper.inhibitForcedDisconnectLogging(true);
     MembershipManagerHelper.playDead(msys);
     GMSMembershipManager mgr = 
((GMSMembershipManager)getMembershipManager(msys));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/fd/GMSHealthMonitorJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/fd/GMSHealthMonitorJUnitTest.java
 
b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/fd/GMSHealthMonitorJUnitTest.java
index 4307bdd..697e899 100644
--- 
a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/fd/GMSHealthMonitorJUnitTest.java
+++ 
b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/fd/GMSHealthMonitorJUnitTest.java
@@ -106,8 +106,11 @@ public class GMSHealthMonitorJUnitTest {
   public void testHMServiceStarted() throws IOException {
 
     InternalDistributedMember mbr = new 
InternalDistributedMember(SocketCreator.getLocalHost(), 12345);
+    mbr.setVmViewId(1);
     when(messenger.getMemberID()).thenReturn(mbr);
     gmsHealthMonitor.started();
+    
+    NetView v = new NetView(mbr, 1, mockMembers, new 
HashSet<InternalDistributedMember>(), new HashSet<InternalDistributedMember>());
 
     gmsHealthMonitor.processMessage(new HeartbeatRequestMessage(mbr, 1));
     verify(messenger, atLeastOnce()).send(any(HeartbeatMessage.class));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f57eb8b1/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java 
b/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
index f8a4da7..b6a4493 100644
--- a/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
+++ b/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
@@ -131,8 +131,12 @@ public class ProcessManager {
         try {
           String line = reader.readLine();
           while(line != null) {
-            out.print(vmName);
-            out.println(line);
+            if (line.length() == 0) {
+              out.println();
+            } else {
+              out.print(vmName);
+              out.println(line);
+            }
             line = reader.readLine();
           }
         } catch(Exception e) {

Reply via email to