[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-22 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/geode/pull/402


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102367266
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
--- End diff --

Yep! Just use that and remove the two log statements (one is add and the 
2nd is remove). I think regex patterns work in the string as well if that ever 
helps.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread galen-pivotal
Github user galen-pivotal commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102357674
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
--- End diff --

Ah, so this would be the equivalent call now?
```java
IgnoredException.addIgnoredException("attempt to add old member");
```


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread bschuchardt
Github user bschuchardt commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102356823
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread bschuchardt
Github user bschuchardt commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102356810
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread galen-pivotal
Github user galen-pivotal commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102345794
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+  

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread galen-pivotal
Github user galen-pivotal commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102345903
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+  

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread galen-pivotal
Github user galen-pivotal commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102345774
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+  

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread bschuchardt
Github user bschuchardt commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102343450
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
--- End diff --

Thanks Kirk!  I'm implementing all of your suggested changes.  There are 
several other places in this class that are using try/finally to remove system 
properties that I'll fix as well.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102334223
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
--- End diff --

I forgot we left the xml strings as "ExpectedException" -- you might want 
to chagne this to use the Java API instead of logging a hardcoded string. This 
will help if and when we ever decide to update the xml strings:
```java
IgnoredException.addIgnoredException("attempt to add old member");
```
If you call the static addIgnoredException like this, then it automatically 
gets added to a collection which is part of the dunit tearDown cleanup (ie, it 
will log the removals for you).



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102332744
  
--- Diff: 
geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
 ---
@@ -978,43 +977,33 @@ public void run() {
 
   /** starts periodic task to perform cleanup chores such as expire 
surprise members */
   private void startCleanupTimer() {
-latestViewWriteLock.lock();
-try {
-  if (this.cleanupTimer != null) {
-return;
-  }
-  DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
-  if (ds != null && ds.isConnected()) {
-this.cleanupTimer = new SystemTimer(ds, true);
-SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask() 
{
-  @Override
-  public void run2() {
-latestViewWriteLock.lock();
-try {
-  long oldestAllowed = System.currentTimeMillis() - 
surpriseMemberTimeout;
-  for (Iterator it = surpriseMembers.entrySet().iterator(); 
it.hasNext();) {
-Map.Entry entry = (Map.Entry) it.next();
-Long birthtime = (Long) entry.getValue();
-if (birthtime.longValue() < oldestAllowed) {
-  it.remove();
-  InternalDistributedMember m = 
(InternalDistributedMember) entry.getKey();
-  logger.info(LocalizedMessage.create(
-  
LocalizedStrings.GroupMembershipService_MEMBERSHIP_EXPIRING_MEMBERSHIP_OF_SURPRISE_MEMBER_0,
-  m));
-  removeWithViewLock(m, true,
-  "not seen in membership view in " + 
surpriseMemberTimeout + "ms");
-}
-  }
-} finally {
-  latestViewWriteLock.unlock();
+DistributedSystem ds = this.dcReceiver.getDM().getSystem();
+this.cleanupTimer = new SystemTimer(ds, true);
+SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask() {
+  @Override
+  public void run2() {
+latestViewWriteLock.lock();
+try {
+  long oldestAllowed = System.currentTimeMillis() - 
surpriseMemberTimeout;
+  for (Iterator it = surpriseMembers.entrySet().iterator(); 
it.hasNext();) {
+Map.Entry entry = (Map.Entry) it.next();
+Long birthtime = (Long) entry.getValue();
+if (birthtime.longValue() < oldestAllowed) {
--- End diff --

As I find deeply nested blocks like this, I've been extracting them to 
private methods in the class. The entire run-block could be extracted to one 
method and/or you could break it up into multiple methods.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102331716
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+   

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102332307
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
+  sys.getLogWriter().info(
+  "Removing shunned GemFire 
node");
 }
-  };
-  vm0.invoke(connectDisconnect);
-
-  if (birthTime < (System.currentTimeMillis() - timeout)) {
-return; // machine is too busy and we didn't get enough CPU to 
perform more assertions
-  }
-  assertTrue("Member was incorrectly removed from surprise member set",
-  mgr.isSurpriseMember(mbr));
+mbr.setVmViewId(oldViewId);
+
+// now forcibly add it as a surprise member and show that it is 
reaped
+   

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-21 Thread kirklund
Github user kirklund commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r102331034
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
--- End diff --

That's actually adding our custom IgnoredException. The purpose was to 
ignore these exceptions if they show up in the logs but not to Expect them in 
the same way as JUnit Expected Exceptions. We updated the Java API to "Ignored" 
(to differentiate it from JUnit's EE) but left the XML as "Expected" -- we 
should update the XML strings to match the Java code.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, pleas

[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-17 Thread galen-pivotal
Github user galen-pivotal commented on a diff in the pull request:

https://github.com/apache/geode/pull/402#discussion_r101873819
  
--- Diff: 
geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionManagerDUnitTest.java
 ---
@@ -159,77 +159,74 @@ public void testConnectAfterBeingShunned() {
**/
   @Test
   public void testSurpriseMemberHandling() {
-VM vm0 = Host.getHost(0).getVM(0);
-
-InternalDistributedSystem sys = getSystem();
-MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
 
+System.setProperty(DistributionConfig.GEMFIRE_PREFIX + 
"surprise-member-timeout", "3000");
 try {
-  InternalDistributedMember mbr =
-  new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+  InternalDistributedSystem sys = getSystem();
+  MembershipManager mgr = 
MembershipManagerHelper.getMembershipManager(sys);
+  assertTrue(((GMSMembershipManager) mgr).isCleanupTimerStarted());
 
-  // first make sure we can't add this as a surprise member (bug 
#44566)
-
-  // if the view number isn't being recorded correctly the test will 
pass but the
-  // functionality is broken
-  Assert.assertTrue("expected view ID to be greater than zero", 
mgr.getView().getViewId() > 0);
-
-  int oldViewId = mbr.getVmViewId();
-  mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("current membership view is " + mgr.getView());
-  org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
-  .info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
-  sys.getLogWriter()
-  .info("attempt to add old 
member");
-  sys.getLogWriter()
-  .info("Removing shunned GemFire 
node");
   try {
-boolean accepted = mgr.addSurpriseMember(mbr);
-Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
-  } finally {
+InternalDistributedMember mbr =
+new InternalDistributedMember(NetworkUtils.getIPLiteral(), 
12345);
+
+// first make sure we can't add this as a surprise member (bug 
#44566)
+
+// if the view number isn't being recorded correctly the test will 
pass but the
+// functionality is broken
+Assert.assertTrue("expected view ID to be greater than zero",
+mgr.getView().getViewId() > 0);
+
+int oldViewId = mbr.getVmViewId();
+mbr.setVmViewId((int) mgr.getView().getViewId() - 1);
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("current membership view is " + mgr.getView());
+org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()
+.info("created ID " + mbr + " with view ID " + 
mbr.getVmViewId());
 sys.getLogWriter()
-.info("attempt to add old 
member");
+.info("attempt to add old 
member");
 sys.getLogWriter().info(
-"Removing shunned GemFire 
node");
-  }
-  mbr.setVmViewId(oldViewId);
-
-  // now forcibly add it as a surprise member and show that it is 
reaped
-  long gracePeriod = 5000;
-  long startTime = System.currentTimeMillis();
-  long timeout = ((GMSMembershipManager) 
mgr).getSurpriseMemberTimeout();
-  long birthTime = startTime - timeout + gracePeriod;
-  MembershipManagerHelper.addSurpriseMember(sys, mbr, birthTime);
-  assertTrue("Member was not a surprise member", 
mgr.isSurpriseMember(mbr));
-
-  // force a real view change
-  SerializableRunnable connectDisconnect = new SerializableRunnable() {
-public void run() {
-  getSystem().disconnect();
+"Removing shunned GemFire 
node");
+try {
+  boolean accepted = mgr.addSurpriseMember(mbr);
+  Assert.assertTrue("member with old ID was not rejected (bug 
#44566)", !accepted);
+} finally {
+  sys.getLogWriter().info(
+  "attempt to add old 
member");
--- End diff --

Is this the old method of adding expected exceptions?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] geode pull request #402: GEODE-2497 surprise members are never timed out dur...

2017-02-17 Thread bschuchardt
GitHub user bschuchardt opened a pull request:

https://github.com/apache/geode/pull/402

GEODE-2497 surprise members are never timed out during startup

Moved the creation of the timer to GMSMembershipManager.started()

Removed write-lock in timer-creation method since it's only called from
one place now

Altered the way that the timer-creation method finds the
InternalDistributedSystem.  The old way of using getAnyInstance() was
the primary source of the problem since it returns null until startup
is completed.

Altered the surprise-member unit test to ensure that it's using the
timer and not relying on installation of a new membership view to clean
things up.

Altered the surprise-member unit test to run faster.  It now completes in
under 10 seconds.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/apache/geode feature/GEODE-2497

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/geode/pull/402.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #402


commit 8d45ca22737282abe279d3c863478f904f2e1926
Author: Bruce Schuchardt 
Date:   2017-02-17T18:17:21Z

GEODE-2497 surprise members are never timed out during startup

Moved the creation of the timer to GMSMembershipManager.started()

Removed write-lock in timer-creation method since it's only called from
one place now

Altered the way that the timer-creation method finds the
InternalDistributedSystem.  The old way of using getAnyInstance() was
the primary source of the problem since it returns null until startup
is completed.

Altered the surprise-member unit test to ensure that it's using the
timer and not relying on installation of a new membership view to clean
things up.

Altered the surprise-member unit test to run faster.  It now completes in
under 10 seconds.




---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---