Author: azeez Date: Mon Jun 27 16:45:53 2011 New Revision: 1140231 URL: http://svn.apache.org/viewvc?rev=1140231&view=rev Log: 1. Ability to suspend a member - this is used in cases such as the Synapse LB where members causing errors should be temporarilly suspended 2. After a member joins, need to wait for sometime (10s in this impl), until we can start sending messages to it
Modified: axis/axis2/java/core/trunk/modules/clustering/src/org/apache/axis2/clustering/management/DefaultGroupManagementAgent.java axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/clustering/Member.java Modified: axis/axis2/java/core/trunk/modules/clustering/src/org/apache/axis2/clustering/management/DefaultGroupManagementAgent.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/clustering/src/org/apache/axis2/clustering/management/DefaultGroupManagementAgent.java?rev=1140231&r1=1140230&r2=1140231&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/clustering/src/org/apache/axis2/clustering/management/DefaultGroupManagementAgent.java (original) +++ axis/axis2/java/core/trunk/modules/clustering/src/org/apache/axis2/clustering/management/DefaultGroupManagementAgent.java Mon Jun 27 16:45:53 2011 @@ -96,11 +96,11 @@ public class DefaultGroupManagementAgent return; } if (canConnect(member)) { - // try - // Thread.sleep(10000); // Sleep for sometime to allow complete initialization of the node - // } catch (InterruptedException e) { - // e.printStackTrace(); - // } + try { + Thread.sleep(10000); // Sleep for sometime to allow complete initialization of the node + } catch (InterruptedException e) { + e.printStackTrace(); + } if (!members.contains(member)) { members.add(member); } Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/clustering/Member.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/clustering/Member.java?rev=1140231&r1=1140230&r2=1140231&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/clustering/Member.java (original) +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/clustering/Member.java Mon Jun 27 16:45:53 2011 @@ -57,11 +57,46 @@ public class Member { */ private Properties properties = new Properties(); + /** + * Time at which this member was suspended + */ + private long suspendedTime = -1; + + /** + * Time in millis which this member should be suspended + */ + private long suspensionDuration = -1; + public Member(String hostName, int port) { this.hostName = hostName; this.port = port; } + /** + * Temporarilly suspend this member + * @param suspensionDurationMillis The time duration in millis in which this member should be suspended + */ + public void suspend(long suspensionDurationMillis){ + this.suspendedTime = System.currentTimeMillis(); + this.suspensionDuration = suspensionDurationMillis; + } + + /** + * Check whether this member is suspended + * @return true if this member is still suspended, false oterwise + */ + public boolean isSuspended() { + if (suspendedTime == -1) { + return false; + } + if (System.currentTimeMillis() - suspendedTime >= suspensionDuration) { + this.suspendedTime = -1; + this.suspensionDuration = -1; + return false; + } + return true; + } + public String getHostName() { return hostName; }