Author: rjung Date: Tue Jun 30 16:52:32 2009 New Revision: 789826 URL: http://svn.apache.org/viewvc?rev=789826&view=rev Log: BZ 46990: Improve locking in membership. Backport of r771009 from TC 6.0.x.
Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastMembership.java tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastMembership.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=789826&r1=789825&r2=789826&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml (original) +++ tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml Tue Jun 30 16:52:32 2009 @@ -33,6 +33,10 @@ <subsection name="Cluster"> <changelog> <fix> + <bug>46990</bug>: Improve locking in membership. + Backport from Tomcat 6.0. (rjung) + </fix> + <fix> <bug>47389</bug>: DeltaManager doesn't do session replication if notifySessionListenersOnReplication=false. (fhanik, rjung) </fix> Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastMembership.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastMembership.java?rev=789826&r1=789825&r2=789826&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastMembership.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastMembership.java Tue Jun 30 16:52:32 2009 @@ -38,6 +38,8 @@ { protected static final McastMember[] EMPTY_MEMBERS = new McastMember[0]; + private final Object membersLock = new Object(); + /** * The name of this membership, has to be the same as the name for the local * member @@ -113,7 +115,7 @@ * @param member The member to add */ protected void addMcastMember(McastMember member) { - synchronized (members) { + synchronized (membersLock) { McastMember results[] = new McastMember[members.length + 1]; for (int i = 0; i < members.length; i++) @@ -130,7 +132,7 @@ * @param member The member to remove */ protected void removeMcastMember(McastMember member) { - synchronized (members) { + synchronized (membersLock) { int n = -1; for (int i = 0; i < members.length; i++) { if (members[i] == member) { Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastMembership.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastMembership.java?rev=789826&r1=789825&r2=789826&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastMembership.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastMembership.java Tue Jun 30 16:52:32 2009 @@ -38,6 +38,8 @@ { protected static final McastMember[] EMPTY_MEMBERS = new McastMember[0]; + private final Object membersLock = new Object(); + /** * The name of this membership, has to be the same as the name for the local * member @@ -113,7 +115,7 @@ * @param member The member to add */ protected void addMcastMember(McastMember member) { - synchronized (members) { + synchronized (membersLock) { McastMember results[] = new McastMember[members.length + 1]; for (int i = 0; i < members.length; i++) @@ -130,7 +132,7 @@ * @param member The member to remove */ protected void removeMcastMember(McastMember member) { - synchronized (members) { + synchronized (membersLock) { int n = -1; for (int i = 0; i < members.length; i++) { if (members[i] == member) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org