https://issues.apache.org/bugzilla/show_bug.cgi?id=47308
Summary: Cannot join in the cluster membership.
Product: Tomcat 6
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Cluster
AssignedTo: [email protected]
ReportedBy: [email protected]
I use Tomcat6.0.20.
The fix of Revision
757582 ( https://svn.apache.org/viewcvs.cgi?view=rev&rev=757582
)(http://svn.apache.org/viewvc?view=rev&revision=757582)
is applied to Tomcat6.0.20.
This fix means that Tomcat6.0.20 always disabled LoopbackMode.
Therefore, it is not possible to join in the membership
when the cluster is composed of two or more Tomcat on the same machine.
I think that options for loopbackMode is better.
I made patch.
McastService's patch.
Index: java/org/apache/catalina/tribes/membership/McastService.java
===================================================================
--- java/org/apache/catalina/tribes/membership/McastService.java (revision
763870 ( https://svn.apache.org/viewcvs.cgi?view=rev&rev=763870 ))
+++ java/org/apache/catalina/tribes/membership/McastService.java (working
copy)
@@ -230,6 +230,9 @@
properties.setProperty("recoverySleepTime",
String.valueOf(recoverySleepTime));
}
+ public void setLocalLoopbackDisabled(boolean localLoopbackDisabled) {
+ properties.setProperty("localLoopbackDisabled",
String.valueOf(localLoopbackDisabled));
+ }
/**
* @deprecated use getPort()
@@ -360,7 +363,8 @@
java.net.InetAddress.getByName(properties.getProperty("mcastAddress")),
ttl,
soTimeout,
- this);
+ this,
+
Boolean.valueOf(properties.getProperty("localLoopbackDisabled","true")).booleanValue());
String value = properties.getProperty("recoveryEnabled","true");
boolean recEnabled = Boolean.valueOf(value).booleanValue() ;
impl.setRecoveryEnabled(recEnabled);
McastServiceImpl's patch.
Index: java/org/apache/catalina/tribes/membership/McastServiceImpl.java
===================================================================
--- java/org/apache/catalina/tribes/membership/McastServiceImpl.java
(revision 763870 ( https://svn.apache.org/viewcvs.cgi?view=rev&rev=763870 ))
+++ java/org/apache/catalina/tribes/membership/McastServiceImpl.java
(working copy)
@@ -135,7 +135,13 @@
* Add the ability to turn on/off recovery
*/
protected boolean recoveryEnabled = true;
+
/**
+ * disable/enable local loopback message
+ */
+ protected boolean localLoopbackDisabled = true;
+
+ /**
* Create a new mcast service impl
* @param member - the local member
* @param sendFrequency - the time (ms) in between pings sent out
@@ -144,6 +150,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(
@@ -155,7 +162,8 @@
InetAddress mcastAddress,
int ttl,
int soTimeout,
- MembershipListener service)
+ MembershipListener service,
+ boolean localLoopbackDisabled)
throws IOException {
this.member = member;
this.address = mcastAddress;
@@ -166,6 +174,7 @@
this.timeToExpiration = expireTime;
this.service = service;
this.sendFrequency = sendFrequency;
+ this.localLoopbackDisabled = localLoopbackDisabled;
init();
}
@@ -199,7 +208,7 @@
} else {
socket = new MulticastSocket(port);
}
- socket.setLoopbackMode(true); //hint that we don't need loop back
messages
+ socket.setLoopbackMode(localLoopbackDisabled); //hint that we don't
need loop back messages
if (mcastBindAddress != null) {
And the localLoopbackDisabled attribute is specified for < Membership > of
server.xml.
example.
<Membership className="org.apache.catalina.tribes.membership.McastService"
--another attribute--
localLoopbackDisabled="false" />
Regards.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]