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/10/14 18:51:54 UTC

incubator-geode git commit: GEODE-77 fixed ability to shut down a rogue member

Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-77 4f1a943f5 -> 3e1a9f69b


GEODE-77 fixed ability to shut down a rogue member


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

Branch: refs/heads/feature/GEODE-77
Commit: 3e1a9f69b0d07e311cc261656d6ba553b7120072
Parents: 4f1a943
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Wed Oct 14 09:51:34 2015 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Wed Oct 14 09:51:34 2015 -0700

----------------------------------------------------------------------
 .../membership/gms/membership/GMSJoinLeave.java       | 14 +++++++++-----
 .../membership/gms/messenger/GMSQuorumChecker.java    |  8 ++++----
 .../gemfire/cache/query/data/PortfolioPdx.java        |  3 +++
 .../gemfire/cache30/TXDistributedDUnitTest.java       |  8 ++++++++
 4 files changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e1a9f69/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 933f802..4ebc20c 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
@@ -584,7 +584,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
     }
   }
   
-  private void sendRemoveMessages(Set<InternalDistributedMember> removals,
+  private void sendRemoveMessages(List<InternalDistributedMember> removals,
       List<String> reasons, NetView newView) {
     Iterator<String> reason = reasons.iterator();
     for (InternalDistributedMember mbr: removals) {
@@ -1615,7 +1615,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
             }
           } // synchronized
           if (requests != null  && !requests.isEmpty()) {
-            logger.debug("View Creator is processing {} requests for the next membership view", requests.size());
+            logger.info("View Creator is processing {} requests for the next membership view", requests.size());
             try {
               createAndSendView(requests);
             } catch (DistributedSystemDisconnectedException e) {
@@ -1636,7 +1636,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
     void createAndSendView(List<DistributionMessage> requests) {
       List<InternalDistributedMember> joinReqs = new ArrayList<>();
       Set<InternalDistributedMember> leaveReqs = new HashSet<>();
-      Set<InternalDistributedMember> removalReqs = new HashSet<>();
+      List<InternalDistributedMember> removalReqs = new ArrayList<>();
       List<String> removalReasons = new ArrayList<String>();
 
       NetView oldView = currentView;
@@ -1678,6 +1678,10 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
           if (oldMembers.contains(mbr) && !leaveReqs.contains(mbr) && !removalReqs.contains(mbr)) {
             removalReqs.add(mbr);
             removalReasons.add(((RemoveMemberMessage) msg).getReason());
+          } else {
+            sendRemoveMessages(Collections.<InternalDistributedMember>singletonList(mbr),
+                Collections.<String>singletonList(((RemoveMemberMessage)msg).getReason()),
+                currentView);
           }
           break;
         default: 
@@ -1711,7 +1715,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
         mbrs.removeAll(leaveReqs);
         mbrs.removeAll(removalReqs);
         newView = new NetView(localAddress, viewNumber, mbrs, leaveReqs,
-            removalReqs);
+            new HashSet<InternalDistributedMember>(removalReqs));
       }
       
       // if there are no membership changes then abort creation of
@@ -1735,7 +1739,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
         sendJoinResponses(joinReqs, newView);
       }
 
-      prepareAndSendView(newView, joinReqs, leaveReqs, removalReqs);
+      prepareAndSendView(newView, joinReqs, leaveReqs, newView.getCrashedMembers());
       return;
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e1a9f69/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 fead37b..13153a4 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
@@ -172,7 +172,7 @@ public class GMSQuorumChecker implements QuorumChecker {
         try {
           pingPonger.sendPingMessage(channel, myAddress, dest);
         } catch (Exception e) {
-          logger.info("Failed sending Ping message to " + dest);
+          logger.debug("Failed sending Ping message to " + dest);
         }
       }
     }
@@ -189,7 +189,7 @@ public class GMSQuorumChecker implements QuorumChecker {
           try {
             pingPonger.sendPongMessage(channel, myAddress, msg.getSrc());
           } catch (Exception e) {
-            logger.info("Failed sending Pong message to " + msg.getSrc());
+            logger.debug("Failed sending Pong message to " + msg.getSrc());
           }
         } else if (pingPonger.isPongMessage(msgBytes)) {
           pongReceived(msg.getSrc());
@@ -228,13 +228,13 @@ public class GMSQuorumChecker implements QuorumChecker {
     }
 
     public void pongReceived(Address sender) {
-      logger.info("received ping-pong response from {}", sender);
+      logger.debug("received ping-pong response from {}", sender);
       JGAddress jgSender = (JGAddress) sender;
       SocketAddress sockaddr = new InetSocketAddress(jgSender.getInetAddress(), jgSender.getPort());
       InternalDistributedMember memberAddr = addressConversionMap.get(sockaddr);
 
       if (memberAddr != null) {
-        logger.info("quorum check: mapped address to member ID {}", memberAddr);
+        logger.debug("quorum check: mapped address to member ID {}", memberAddr);
         receivedAcks.add(memberAddr);
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e1a9f69/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/data/PortfolioPdx.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/data/PortfolioPdx.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/data/PortfolioPdx.java
index 9dba8d2..8932fe1 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/data/PortfolioPdx.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/data/PortfolioPdx.java
@@ -32,6 +32,7 @@ import com.gemstone.gemfire.pdx.PdxWriter;
 
 
 public class PortfolioPdx implements Serializable, PdxSerializable  {
+  public static boolean DEBUG = false;
 
   public enum Day {
     Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
@@ -129,11 +130,13 @@ public class PortfolioPdx implements Serializable, PdxSerializable  {
   /* public no-arg constructor required for Deserializable */
   public PortfolioPdx() {
     this.numInstance++;
+    if (DEBUG) Thread.dumpStack();
 //    GemFireCacheImpl.getInstance().getLoggerI18n().fine(new Exception("DEBUG"));
   }
 
   public PortfolioPdx(int i) {
     aDay = (Day)(dayList.get((i % dayList.size())));
+    if (DEBUG) Thread.dumpStack();
     this.numInstance++;
     ID = i;
     if(i % 2 == 0) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e1a9f69/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
index 6d36646..a59a3d5 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 import java.io.Serializable;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
 
 import junit.framework.AssertionFailedError;
@@ -508,6 +509,13 @@ public class TXDistributedDUnitTest extends CacheTestCase {
       });
 
   }
+  
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties p = super.getDistributedSystemProperties();
+    p.put("log-level", "fine");
+    return p;
+  }
 
   public void testHighAvailabilityFeatures() throws Exception {
     addExpectedException("DistributedSystemDisconnectedException");