DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=43435>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=43435 Summary: AbstractReplicatedMap.memberDisappeared is executed more than the necessity. Product: Tomcat 6 Version: 6.0.14 Platform: Other OS/Version: other Status: NEW Severity: normal Priority: P2 Component: Cluster AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The following codes are in the memberDisappeared method of org.apache.catalina.tribes.tipis.AbstractReplicatedMap. public void memberDisappeared(Member member) { boolean removed = false; synchronized (mapMembers) { removed = (mapMembers.remove(member) != null ); } Iterator i = super.entrySet().iterator(); while (i.hasNext()) { ** omit Relocate of session. ** This means relocate of the session is done every time after member is deleted from mapMembers (The value of removed : regardless of true/false). I think that if the member has already been deleted, the relocate of the session need not be done. This most strongly influencing is stop Tomcat(setting TcpFailureDetector) in Cluster at a high load (A lot of requests are processed at the same time). Above-mentioned case is The relocate of the session is done at all requests where memberDisappeared is detected by TcpFailureDetector. The relocate of the session is a little heavy processing. IMHO, this is not good thing. I made AbstractReplicatedMap's patch. Index: /tomcat6- trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java =================================================================== --- /tomcat6- trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (revision 577691) +++ /tomcat6- trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (working copy) @@ -713,6 +713,7 @@ boolean removed = false; synchronized (mapMembers) { removed = (mapMembers.remove(member) != null ); + if (!removed) return; } Iterator i = super.entrySet().iterator(); Regards. -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]