Author: fhanik
Date: Tue May 23 16:28:04 2006
New Revision: 409026

URL: http://svn.apache.org/viewvc?rev=409026&view=rev
Log:
implemented the notification flag

Modified:
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java?rev=409026&r1=409025&r2=409026&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
 Tue May 23 16:28:04 2006
@@ -30,6 +30,7 @@
 import org.apache.catalina.tribes.membership.Membership;
 import org.apache.catalina.tribes.util.Arrays;
 import org.apache.catalina.tribes.util.UUIDGenerator;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * <p>Title: Auto merging leader election algorithm</p>
@@ -172,6 +173,8 @@
     
     protected Object electionMutex = new Object();
     
+    protected AtomicBoolean coordMsgReceived = new AtomicBoolean(false);
+    
     public NonBlockingCoordinator() {
         super();
     }
@@ -195,12 +198,12 @@
             if ( local.equals(leader) || force ) 
sendElectionMsg(local,leader,others);
             else {
                 try {
+                    coordMsgReceived.set(false);
                     electionMutex.wait(waitForCoordMsgTimeout);
                 }catch ( InterruptedException x ) {
                     Thread.currentThread().interrupted();
                 }
-                if ( rotatingViews.size() == 0 && suggestedviewId == null ) {
-                    if ( true )throw new UnsupportedOperationException("Not 
yet implemented timeout flag");
+                if ( rotatingViews.size() == 0 && suggestedviewId == null && 
(!coordMsgReceived.get())) {
                     //no message arrived, send the coord msg
                     startElection(true);
                 }
@@ -262,6 +265,7 @@
     
     protected void processCoordMessage(CoordinationMessage msg, Member sender) 
throws ChannelException {
         synchronized (electionMutex) {
+            coordMsgReceived.set(true);
             msg.timestamp = System.currentTimeMillis();
             rotatingViews.put(msg.getId(),msg);
             Membership merged = mergeOnArrive(msg,sender);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to