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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org