Hi Filip
Thanks for the info. However, I don't see the documentation for
the setters/getters you mention below?
Also I'm having issues while debugging. When I hit a breakpoint
in my code and while stepping thru code, I get DISAPPEARED/ADDED
messages over and over on the other server? I would think the
heartbeat is running in a separate thread for both send/receive?
How to solve this, bump the heartbeat timeout?
TIA
Mike
-----Original Message-----
From: Filip Hanik - Dev Lists [mailto:[EMAIL PROTECTED]
Sent: October 3, 2008 2:51 PM
To: Tomcat Users List
Subject: Re: Basic Tribes Questions
answers inline
Mike Wannamaker wrote:
Hi, I am currently trying to use Tribes as the clustering layer
on our server.
My startup code looks like this.
if(_tribesChannel == null)
{ // nothing to do if already running
try
{
_tribesChannel = new GroupChannel();
// must be done before start:
no need to use any properties, there are getters and setters for
everything
and they are all documented here
http://tomcat.apache.org/tomcat-6.0-doc/config/cluster-channel.html
_tribesChannel.getMembershipService
().getProperties().put("mcastPort", String.valueOf(_mainPort));
_tribesChannel.getMembershipService
().getProperties().put("mcastAddress", _multicastIPAddr);
not sure what you are trying to do in the code below. if you
wanna set
the port, then simply do it.
the membership will pick it up automatically
if(_ancillaryPort > 0)
{
_tribesChannel.getMembershipService
().getProperties().put("tcpListenPort", String.valueOf
(_ancillaryPort));
// hack alert: Default Tribes instantiation
(Tomcat 6.0.16) does not read value for "tcpListenPort" from
properties.
// Therefore, set it directly
ChannelReceiver receiver =
_tribesChannel.getChannelReceiver();
if(receiver.getPort() != _ancillaryPort)
{
if(receiver instanceof ReceiverBase)
{
((ReceiverBase)receiver).setPort
(_ancillaryPort);
}
}
}
_tribesChannel.addMembershipListener
(_tribesMembershipListener);
_tribesChannel.addChannelListener
(_tribesChannelListener);
_tribesChannel.start(CHANNEL_COMPONENTS);
}
catch(ChannelException ex)
{
try { _tribesChannel.stop(CHANNEL_COMPONENTS); }
catch(Throwable t) { /*gulp*/}
_tribesChannel = null;
throw new RuntimeException(ex); // todo,
exception handling?
}
}
My Question is that when I start Server #1, then Server #2, then
unplug Server #2 network cable, Server #1 gets the DISAPPEARED
message but Server #2 just keeps logging the message below. As
I write this it's at attempt #120. How do I get this to notify
on Server #2 that Server #1 has DISAPPEARED or can I set the
number of attempts to a maximum number before notifying?
the message you are getting is cause the membership tries to
recover.
you can limit this, by doing
setRecoveryEnabled(true|false);
setRecoveryCounter(nr-of-times-to-try-recover)
also, you haven't added in the TCP failure detector, which adds
one more
layer of protection
see it in this default configuration
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
you should still get the member disappeared error (eventually
after the
timeout), if you can supply a simple test case, I can try it out
over here.
best
Filip
Also is there any other documentation for tribes, other than the
limited docs on the apache site?
INFO: Done sleeping, membership established, start level:8
Oct 3, 2008 1:12:44 PM
org.apache.catalina.tribes.transport.nio.NioReplicationTask run
WARNING: IOException in replication worker, unable to drain
channel. Probable cause: Keep alive socket closed[An existing
connection was forcibly closed by the remote host].
Oct 3, 2008 1:12:44 PM
org.apache.catalina.tribes.membership.McastServiceImpl
$SenderThread run
WARNING: Unable to send mcast message.
java.net.NoRouteToHostException: No route to host: Datagram
send failed
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:612)
at org.apache.catalina.tribes.membership.McastServiceImpl.send
(McastServiceImpl.java:385)
at org.apache.catalina.tribes.membership.McastServiceImpl
$SenderThread.run(McastServiceImpl.java:445)
Oct 3, 2008 1:12:49 PM
org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread run
INFO: Tribes membership, running recovery thread, multicasting
is not functional.
Oct 3, 2008 1:12:49 PM
org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread stopService
WARNING: Recovery thread failed to stop membership service.
java.net.NoRouteToHostException: No route to host: Datagram
send failed
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:612)
at org.apache.catalina.tribes.membership.McastServiceImpl.send
(McastServiceImpl.java:385)
at org.apache.catalina.tribes.membership.McastServiceImpl.stop
(McastServiceImpl.java:299)
at org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread.stopService(McastServiceImpl.java:480)
at org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread.run(McastServiceImpl.java:504)
Oct 3, 2008 1:12:49 PM
org.apache.catalina.tribes.membership.McastServiceImpl setupSocket
INFO: Setting cluster mcast soTimeout to 500
Oct 3, 2008 1:12:49 PM
org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread startService
WARNING: Recovery thread failed to start membership service.
java.net.SocketException: error setting options
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.PlainDatagramSocketImpl.join
(PlainDatagramSocketImpl.java:172)
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
at org.apache.catalina.tribes.membership.McastServiceImpl.start
(McastServiceImpl.java:233)
at org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread.startService(McastServiceImpl.java:490)
at org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread.run(McastServiceImpl.java:504)
Oct 3, 2008 1:12:49 PM
org.apache.catalina.tribes.membership.McastServiceImpl
$RecoveryThread run
INFO: Recovery attempt 1 failed, trying again in 5000 seconds
--------------------------------------------------------------------
-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]