Author: rjung Date: Thu Apr 15 19:08:54 2010 New Revision: 934551 URL: http://svn.apache.org/viewvc?rev=934551&view=rev Log: Fix BZ46384: Correct synchronisation problem that leads to cluster members permanently disappearing.
Port of r884960 from TC 5.5.x. Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml?rev=934551&r1=934550&r2=934551&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml (original) +++ tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml Thu Apr 15 19:08:54 2010 @@ -33,6 +33,16 @@ <subsection name="Cluster"> <changelog> <fix> + <bug>46384</bug>: Correct synchronisation issue that could lead to a + cluster member disappering permanently. + Port from Tomcat 5.5. (rjung) + </fix> + <fix> + Spurious startup errors during session transfer. + Sessions get transferred, but node still waits until timeout. + Port from Tomcat 5.5. (rjung) + </fix> + <fix> <bug>43840</bug>: Include user principal if possible when serializing / de-serializing sessions. Port from Tomcat 6.0. (rjung) Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java?rev=934551&r1=934550&r2=934551&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java Thu Apr 15 19:08:54 2010 @@ -266,23 +266,25 @@ public class McastServiceImpl McastMember m = McastMember.getMember(data); if(log.isDebugEnabled()) log.debug("Mcast receive ping from member " + m); - if ( membership.memberAlive(m) ) { - if(log.isDebugEnabled()) - log.debug("Mcast add member " + m); - service.memberAdded(m); + synchronized (membershipMutex) { + if ( membership.memberAlive(m) ) { + if(log.isDebugEnabled()) + log.debug("Mcast add member " + m); + service.memberAdded(m); + } } } finally { checkExpire(); } } - protected Object expiredMutex = new Object(); + protected final Object membershipMutex = new Object(); /** * check member expire or alive */ protected void checkExpire() { - synchronized (expiredMutex) { + synchronized (membershipMutex) { McastMember[] expired = membership.expire(timeToExpiration); for ( int i=0; i<expired.length; i++) { if(log.isDebugEnabled()) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org