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]