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]