fhanik 2004/04/08 08:30:11 Modified: modules/cluster/src/share/org/apache/catalina/cluster/mcast McastMembership.java modules/cluster/src/share/org/apache/catalina/cluster/session DeltaManager.java modules/cluster/src/share/org/apache/catalina/cluster/tcp SimpleTcpCluster.java Log: Three fixes: 1. Membership alive time gets updated with each new broad cast, this will keep the membership updated with the exact lifetime of each node 2. The cluster sorts its members by desc alive time 3. change the started flag to be set earlier in the DeltaManager, somehow the start is still invoked twice, will investigate Revision Changes Path 1.4 +5 -2 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/mcast/McastMembership.java Index: McastMembership.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/mcast/McastMembership.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- McastMembership.java 27 Feb 2004 14:58:55 -0000 1.3 +++ McastMembership.java 8 Apr 2004 15:30:11 -0000 1.4 @@ -76,6 +76,9 @@ entry = new MbrEntry(m); map.put(m.getName(),entry); result = true; + } else { + //update the member alive time + entry.getMember().setMemberAliveTime(m.getMemberAliveTime()); }//end if entry.accessed(); return result; @@ -163,4 +166,4 @@ return delta > maxtime; } }//MbrEntry -} \ No newline at end of file +} 1.22 +3 -2 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java Index: DeltaManager.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- DeltaManager.java 7 Apr 2004 20:43:54 -0000 1.21 +++ DeltaManager.java 8 Apr 2004 15:30:11 -0000 1.22 @@ -602,8 +602,9 @@ if (started) { return; } - lifecycle.fireLifecycleEvent(START_EVENT, null); started = true; + lifecycle.fireLifecycleEvent(START_EVENT, null); + // Force initialization of the random number generator String dummy = generateSessionId(); 1.38 +27 -2 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java Index: SimpleTcpCluster.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- SimpleTcpCluster.java 7 Apr 2004 20:43:55 -0000 1.37 +++ SimpleTcpCluster.java 8 Apr 2004 15:30:11 -0000 1.38 @@ -167,6 +167,9 @@ private long nrOfMsgsReceived = 0; private long msgSendTime = 0; private long lastChecked = System.currentTimeMillis(); + + //sort members by alive time + protected MemberComparator memberComparator = new MemberComparator(); private String managerClassName = "org.apache.catalina.cluster.session.DeltaManager"; @@ -281,7 +284,10 @@ } public Member[] getMembers() { - return membershipService.getMembers(); + Member[] members = membershipService.getMembers(); + //sort by alive time + java.util.Arrays.sort(members,memberComparator); + return members; } @@ -643,6 +649,25 @@ public void addValve(Valve valve) { this.valve = valve; + } + + private class MemberComparator implements java.util.Comparator { + + public int compare(Object o1, Object o2) { + try { + return compare((Member)o1,(Member)o2); + } catch (ClassCastException x) { + return 0; + } + } + + public int compare(Member m1, Member m2) { + //longer alive time, means sort first + long result = m2.getMemberAliveTime() - m1.getMemberAliveTime(); + if ( result < 0 ) return -1; + else if ( result == 0 ) return 0; + else return 1; + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]