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

Reply via email to