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 2012/07/09 12:45:44 UTC
svn commit: r1359044 - in /tomcat/tc7.0.x/trunk:
java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
webapps/docs/changelog.xml
Author: kfujino
Date: Mon Jul 9 10:45:43 2012
New Revision: 1359044
URL: http://svn.apache.org/viewvc?rev=1359044&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53513.
Fix race condition between the processing of session sync message and transfer complete message.
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java?rev=1359044&r1=1359043&r2=1359044&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java Mon Jul 9 10:45:43 2012
@@ -45,6 +45,7 @@ import org.apache.catalina.ha.session.Cl
import org.apache.catalina.ha.session.DeltaManager;
import org.apache.catalina.ha.session.JvmRouteBinderValve;
import org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener;
+import org.apache.catalina.ha.session.SessionMessage;
import org.apache.catalina.ha.util.IDynamicProperty;
import org.apache.catalina.tribes.Channel;
import org.apache.catalina.tribes.ChannelListener;
@@ -799,15 +800,20 @@ public class SimpleTcpCluster extends Li
public void send(ClusterMessage msg, Member dest) {
try {
msg.setAddress(getLocalMember());
+ int sendOptions = channelSendOptions;
+ if (msg instanceof SessionMessage
+ && ((SessionMessage)msg).getEventType() == SessionMessage.EVT_ALL_SESSION_DATA) {
+ sendOptions = Channel.SEND_OPTIONS_SYNCHRONIZED_ACK|Channel.SEND_OPTIONS_USE_ACK;
+ }
if (dest != null) {
if (!getLocalMember().equals(dest)) {
- channel.send(new Member[] {dest}, msg,channelSendOptions);
+ channel.send(new Member[] {dest}, msg, sendOptions);
} else
log.error("Unable to send message to local member " + msg);
} else {
Member[] destmembers = channel.getMembers();
if (destmembers.length>0)
- channel.send(destmembers,msg,channelSendOptions);
+ channel.send(destmembers,msg, sendOptions);
else if (log.isDebugEnabled())
log.debug("No members in cluster, ignoring message:"+msg);
}
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=1359044&r1=1359043&r2=1359044&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Jul 9 10:45:43 2012
@@ -86,6 +86,10 @@
Investigations showed that this option had no effect for Cluster Channel
Receivers it was removed. (markt)
</fix>
+ <fix>
+ <bug>53513</bug>: Fix race condition between the processing of session
+ sync message and transfer complete message. (kfujino)
+ </fix>
</changelog>
</subsection>
<subsection name="Web applications">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org