Author: fhanik
Date: Tue May 2 16:58:18 2006
New Revision: 399095
URL: http://svn.apache.org/viewcvs?rev=399095&view=rev
Log:
implemented the heart beat, the failure detector should be ready to test
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
URL:
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java?rev=399095&r1=399094&r2=399095&view=diff
==============================================================================
---
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
(original)
+++
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
Tue May 2 16:58:18 2006
@@ -30,6 +30,7 @@
import java.util.HashMap;
import org.apache.catalina.tribes.membership.Membership;
import org.apache.catalina.tribes.membership.MemberImpl;
+import java.util.Iterator;
/**
* <p>Title: A perfect failure detector </p>
@@ -137,9 +138,29 @@
return super.getLocalMember(incAlive);
}
- public void heartbeat() {
- //todo, implement an expiration of members that we deemed alive
- //check them again and act accordingly
+ public synchronized void heartbeat() {
+ if ( membership == null ) setupMembership();
+ //update all alive times
+ Member[] members = super.getMembers();
+ for ( int i=0; i<members.length; i++ ) {
+ if ( membership.memberAlive((MemberImpl)members[i]) ) {
+ log.warn("Member added, even though we werent
notified:"+members[i]);
+ super.memberAdded(members[i]);
+ }//end if
+ }//for
+
+ //check suspect members if they are still alive,
+ //if not, simply issue the memberDisappeared message
+
+ for (Iterator i = suspect.keySet().iterator(); i.hasNext(); ) {
+ MemberImpl m = (MemberImpl)i.next();
+ if (!memberAlive(m)) {
+ membership.removeMember(m);
+ super.memberDisappeared(m);
+ suspect.remove(m);
+ }//end if
+ }
+
super.heartbeat();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]