You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2015/04/21 03:40:03 UTC
svn commit: r1675019 -
/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
Author: kfujino
Date: Tue Apr 21 01:40:03 2015
New Revision: 1675019
URL: http://svn.apache.org/r1675019
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/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1675019&r1=1675018&r2=1675019&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original)
+++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Tue Apr 21 01:40:03 2015
@@ -671,8 +671,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();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org