Author: fhanik
Date: Thu Jun 18 17:08:38 2009
New Revision: 786165
URL: http://svn.apache.org/viewvc?rev=786165&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47308
Patch provided by Keiichi Fujino with one change, default is false
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
tomcat/trunk/webapps/docs/config/cluster-membership.xml
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
Thu Jun 18 17:08:38 2009
@@ -245,6 +245,9 @@
properties.setProperty("recoverySleepTime",
String.valueOf(recoverySleepTime));
}
+ public void setLocalLoopbackDisabled(boolean localLoopbackDisabled) {
+
properties.setProperty("localLoopbackDisabled",String.valueOf(localLoopbackDisabled));
+ }
/**
* @deprecated use getPort()
@@ -383,7 +386,8 @@
ttl,
soTimeout,
this,
- this);
+ this,
+
Boolean.valueOf(properties.getProperty("localLoopbackDisabled","false")).booleanValue());
String value = properties.getProperty("recoveryEnabled","true");
boolean recEnabled = Boolean.valueOf(value).booleanValue() ;
impl.setRecoveryEnabled(recEnabled);
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
(original)
+++
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
Thu Jun 18 17:08:38 2009
@@ -148,6 +148,11 @@
protected ExecutorService executor = new ThreadPoolExecutor(0, 2, 0L,
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
/**
+ * disable/enable local loopback message
+ */
+ protected boolean localLoopbackDisabled = false;
+
+ /**
* Create a new mcast service impl
* @param member - the local member
* @param sendFrequency - the time (ms) in between pings sent out
@@ -156,6 +161,7 @@
* @param bind - the bind address (not sure this is used yet)
* @param mcastAddress - the mcast address
* @param service - the callback service
+ * @param disableLoopbackMode - disable loopbackMode
* @throws IOException
*/
public McastServiceImpl(
@@ -168,7 +174,8 @@
int ttl,
int soTimeout,
MembershipListener service,
- MessageListener msgservice)
+ MessageListener msgservice,
+ boolean localLoopbackDisabled)
throws IOException {
this.member = member;
this.address = mcastAddress;
@@ -180,6 +187,7 @@
this.service = service;
this.msgservice = msgservice;
this.sendFrequency = sendFrequency;
+ this.localLoopbackDisabled = localLoopbackDisabled;
init();
}
@@ -213,7 +221,7 @@
} else {
socket = new MulticastSocket(port);
}
- socket.setLoopbackMode(true); //hint that we don't need loop back
messages
+ socket.setLoopbackMode(localLoopbackDisabled); //hint if we want
disable loop back(local machine) messages
if (mcastBindAddress != null) {
if(log.isInfoEnabled())
log.info("Setting multihome multicast interface to:"
+mcastBindAddress);
Modified: tomcat/trunk/webapps/docs/config/cluster-membership.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-membership.xml?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/cluster-membership.xml (original)
+++ tomcat/trunk/webapps/docs/config/cluster-membership.xml Thu Jun 18 17:08:38
2009
@@ -147,6 +147,14 @@
The default is <code>5000</code> (5 seconds). <br/>
</p>
</attribute>
+
+ <attribute name="localLoopbackDisabled" required="false">
+ <p>
+ Membership uses multicast, it will call
<code>java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled)</code>.
+ When <code>localLoopbackDisabled==true</code> multicast messages will
not reach other nodes on the same local machine.
+ The default is <code>false</code>. <br/>
+ </p>
+ </attribute>
</attributes>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]