[55/57] [abbrv] geode git commit: GEODE-2497 surprise members are never timed out during startup

2017-02-22 Thread klund
GEODE-2497 surprise members are never timed out during startup

Merge of 8d45ca22737282abe279d3c863478f904f2e1926 and
a6dfa4ca630a82fcf92942a834f8255e86d2bfcb from feature/GEODE-2497.

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.

This closes #402


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

Branch: refs/heads/feature/GEODE-2460
Commit: 135bd77a11c10609310838bb77cf9bb57d38fee3
Parents: c6b941f
Author: Bruce Schuchardt 
Authored: Tue Feb 21 16:07:51 2017 -0800
Committer: Bruce Schuchardt 
Committed: Tue Feb 21 16:30:19 2017 -0800

--
 .../gms/mgr/GMSMembershipManager.java   | 190 +--
 .../internal/DistributionManagerDUnitTest.java  |  72 +++
 2 files changed, 122 insertions(+), 140 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/geode/blob/135bd77a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
--
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index cf17025..050e201 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -128,7 +128,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* Trick class to make the startup synch more visible in stack traces
-   * 
+   *
* @see GMSMembershipManager#startupLock
*/
   static class EventProcessingLock {
@@ -143,7 +143,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 /**
  * indicates whether the event is a departure, a surprise connect (i.e., 
before the view message
  * arrived), a view, or a regular message
- * 
+ *
  * @see #SURPRISE_CONNECT
  * @see #VIEW
  * @see #MESSAGE
@@ -181,7 +181,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a surprise connect event
- * 
+ *
  * @param member the member connecting
  */
 StartupEvent(final InternalDistributedMember member) {
@@ -191,7 +191,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a surprise connect event
- * 
+ *
  * @return true if this is a connect event
  */
 boolean isSurpriseConnect() {
@@ -200,7 +200,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a view event
- * 
+ *
  * @param v the new view
  */
 StartupEvent(NetView v) {
@@ -210,7 +210,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a view event
- * 
+ *
  * @return true if this is a view event
  */
 boolean isGmsView() {
@@ -219,7 +219,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a message event
- * 
+ *
  * @param d the message
  */
 StartupEvent(DistributionMessage d) {
@@ -229,7 +229,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a message event
- * 
+ *
  * @return true if this is a message event
  */
 boolean isDistributionMessage() {
@@ -248,14 +248,14 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* This is the latest view (ordered list of DistributedMembers) that has 
been installed
-   * 
+   *
* All accesses to this object are protected via {@link #latestViewLock}
*/
   private NetView latestView = new NetView();
 
   /**
* This is the lock for protecting access to latestView
-   * 
+   *
* @see 

[55/58] [abbrv] geode git commit: GEODE-2497 surprise members are never timed out during startup

2017-02-22 Thread jinmeiliao
GEODE-2497 surprise members are never timed out during startup

Merge of 8d45ca22737282abe279d3c863478f904f2e1926 and
a6dfa4ca630a82fcf92942a834f8255e86d2bfcb from feature/GEODE-2497.

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.

This closes #402


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

Branch: refs/heads/feature/GEODE-2267
Commit: 135bd77a11c10609310838bb77cf9bb57d38fee3
Parents: c6b941f
Author: Bruce Schuchardt 
Authored: Tue Feb 21 16:07:51 2017 -0800
Committer: Bruce Schuchardt 
Committed: Tue Feb 21 16:30:19 2017 -0800

--
 .../gms/mgr/GMSMembershipManager.java   | 190 +--
 .../internal/DistributionManagerDUnitTest.java  |  72 +++
 2 files changed, 122 insertions(+), 140 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/geode/blob/135bd77a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
--
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index cf17025..050e201 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -128,7 +128,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* Trick class to make the startup synch more visible in stack traces
-   * 
+   *
* @see GMSMembershipManager#startupLock
*/
   static class EventProcessingLock {
@@ -143,7 +143,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 /**
  * indicates whether the event is a departure, a surprise connect (i.e., 
before the view message
  * arrived), a view, or a regular message
- * 
+ *
  * @see #SURPRISE_CONNECT
  * @see #VIEW
  * @see #MESSAGE
@@ -181,7 +181,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a surprise connect event
- * 
+ *
  * @param member the member connecting
  */
 StartupEvent(final InternalDistributedMember member) {
@@ -191,7 +191,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a surprise connect event
- * 
+ *
  * @return true if this is a connect event
  */
 boolean isSurpriseConnect() {
@@ -200,7 +200,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a view event
- * 
+ *
  * @param v the new view
  */
 StartupEvent(NetView v) {
@@ -210,7 +210,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a view event
- * 
+ *
  * @return true if this is a view event
  */
 boolean isGmsView() {
@@ -219,7 +219,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a message event
- * 
+ *
  * @param d the message
  */
 StartupEvent(DistributionMessage d) {
@@ -229,7 +229,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a message event
- * 
+ *
  * @return true if this is a message event
  */
 boolean isDistributionMessage() {
@@ -248,14 +248,14 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* This is the latest view (ordered list of DistributedMembers) that has 
been installed
-   * 
+   *
* All accesses to this object are protected via {@link #latestViewLock}
*/
   private NetView latestView = new NetView();
 
   /**
* This is the lock for protecting access to latestView
-   * 
+   *
* @see 

[1/2] geode git commit: GEODE-2497 surprise members are never timed out during startup

2017-02-22 Thread bschuchardt
Repository: geode
Updated Branches:
  refs/heads/develop c6b941fd3 -> 3474fa7ab


GEODE-2497 surprise members are never timed out during startup

Merge of 8d45ca22737282abe279d3c863478f904f2e1926 and
a6dfa4ca630a82fcf92942a834f8255e86d2bfcb from feature/GEODE-2497.

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.

This closes #402


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

Branch: refs/heads/develop
Commit: 135bd77a11c10609310838bb77cf9bb57d38fee3
Parents: c6b941f
Author: Bruce Schuchardt 
Authored: Tue Feb 21 16:07:51 2017 -0800
Committer: Bruce Schuchardt 
Committed: Tue Feb 21 16:30:19 2017 -0800

--
 .../gms/mgr/GMSMembershipManager.java   | 190 +--
 .../internal/DistributionManagerDUnitTest.java  |  72 +++
 2 files changed, 122 insertions(+), 140 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/geode/blob/135bd77a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
--
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index cf17025..050e201 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -128,7 +128,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* Trick class to make the startup synch more visible in stack traces
-   * 
+   *
* @see GMSMembershipManager#startupLock
*/
   static class EventProcessingLock {
@@ -143,7 +143,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 /**
  * indicates whether the event is a departure, a surprise connect (i.e., 
before the view message
  * arrived), a view, or a regular message
- * 
+ *
  * @see #SURPRISE_CONNECT
  * @see #VIEW
  * @see #MESSAGE
@@ -181,7 +181,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a surprise connect event
- * 
+ *
  * @param member the member connecting
  */
 StartupEvent(final InternalDistributedMember member) {
@@ -191,7 +191,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a surprise connect event
- * 
+ *
  * @return true if this is a connect event
  */
 boolean isSurpriseConnect() {
@@ -200,7 +200,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a view event
- * 
+ *
  * @param v the new view
  */
 StartupEvent(NetView v) {
@@ -210,7 +210,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a view event
- * 
+ *
  * @return true if this is a view event
  */
 boolean isGmsView() {
@@ -219,7 +219,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Create a message event
- * 
+ *
  * @param d the message
  */
 StartupEvent(DistributionMessage d) {
@@ -229,7 +229,7 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
 /**
  * Indicate if this is a message event
- * 
+ *
  * @return true if this is a message event
  */
 boolean isDistributionMessage() {
@@ -248,14 +248,14 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /**
* This is the latest view (ordered list of DistributedMembers) that has 
been installed
-   * 
+   *
* All accesses to this object are protected via {@link #latestViewLock}
*/
   private NetView latestView = new NetView();
 
   /**
* This is 

geode git commit: GEODE-2497 surprise members are never timed out during startup

2017-02-17 Thread bschuchardt
Repository: geode
Updated Branches:
  refs/heads/feature/GEODE-2497 [created] 8d45ca227


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.


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

Branch: refs/heads/feature/GEODE-2497
Commit: 8d45ca22737282abe279d3c863478f904f2e1926
Parents: dbea592
Author: Bruce Schuchardt 
Authored: Fri Feb 17 10:17:21 2017 -0800
Committer: Bruce Schuchardt 
Committed: Fri Feb 17 10:22:25 2017 -0800

--
 .../gms/mgr/GMSMembershipManager.java   |  75 +---
 .../internal/DistributionManagerDUnitTest.java  | 117 +--
 2 files changed, 89 insertions(+), 103 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/geode/blob/8d45ca22/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
--
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index cf17025..6cefe4e 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -608,7 +608,6 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
   }
   try {
 listener.viewInstalled(latestView);
-startCleanupTimer();
   } catch (DistributedSystemDisconnectedException se) {
   }
 } finally {
@@ -616,6 +615,10 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 }
   }
 
+  public boolean isCleanupTimerStarted() {
+return this.cleanupTimer != null;
+  }
+
   /**
* the timer used to perform periodic tasks
* 
@@ -767,7 +770,9 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
   }
 
   @Override
-  public void started() {}
+  public void started() {
+startCleanupTimer();
+  }
 
 
   /** this is invoked by JoinLeave when there is a loss of quorum in the 
membership system */
@@ -942,12 +947,6 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 surpriseMembers.remove(member);
   } else {
 
-// Now that we're sure the member is new, add them.
-// make sure the surprise-member cleanup task is running
-if (this.cleanupTimer == null) {
-  startCleanupTimer();
-} // cleanupTimer == null
-
 // Ensure that the member is accounted for in the view
 // Conjure up a new view including the new member. This is necessary
 // because we are about to tell the listener about a new member, so
@@ -978,43 +977,33 @@ public class GMSMembershipManager implements 
MembershipManager, Manager {
 
   /** 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 =