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;
     }


Reply via email to