Author: kfujino Date: Tue Apr 21 01:45:33 2015 New Revision: 1675021 URL: http://svn.apache.org/r1675021 Log: Fix a concurrency issue when a backup message that has all session data and a backup message that has diff data are processing at the same time.
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1675021&r1=1675020&r2=1675021&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Tue Apr 21 01:45:33 2015 @@ -675,8 +675,17 @@ public abstract class AbstractReplicated diff.unlock(); } } else { - if ( mapmsg.getValue()!=null ) entry.setValue((V) mapmsg.getValue()); - ((ReplicatedMapEntry)entry.getValue()).setOwner(getMapOwner()); + if ( mapmsg.getValue()!=null ) { + if (mapmsg.getValue() instanceof ReplicatedMapEntry) { + ReplicatedMapEntry re = (ReplicatedMapEntry)mapmsg.getValue(); + re.setOwner(getMapOwner()); + entry.setValue((V) re); + } else { + entry.setValue((V) mapmsg.getValue()); + } + } else { + ((ReplicatedMapEntry)entry.getValue()).setOwner(getMapOwner()); + } } //end if } else if (mapmsg.getValue() instanceof ReplicatedMapEntry) { ReplicatedMapEntry re = (ReplicatedMapEntry)mapmsg.getValue(); Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1675021&r1=1675020&r2=1675021&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Apr 21 01:45:33 2015 @@ -153,6 +153,16 @@ </add> </changelog> </subsection> + <subsection name="Tribes"> + <changelog> + <fix> + Fix a concurrency issue when a backup message that has all session data + and a backup message that has diff data are processing at the same time. + This fix ensures that <code>MapOwner</code> is set to + <code>ReplicatedMapEntry</code>. (kfujino) + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 7.0.61 (violetagg)" rtext="released 2015-04-07"> <subsection name="Catalina"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org