tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Madhav Bhargava <unmarsh...@gmail.com>
Subject Multicast fails when mcastBindAddress is explicitly set
Date Fri, 29 Jun 2012 12:28:05 GMT
Hi All,

We are using Apache Tribes 7.0.2. We use it for node discovery and p2p
communication.
We are currently running into a problem where the discovery fails on
multihomed machines (multiple IP's). We were not sure to which IP the
multicast bind address was getting bound to, so we thought of explicitly
binding the interface via "mcastBindAddress" property. However when we set
this property then we get the following exception:

Exception occured: java.io.IOException: Invalid argument; No faulty members
identified.org.apache.catalina.tribes.ChannelException:
java.io.IOException: Invalid argument; No faulty members identified.

        at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:178)

        at
org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)

        at
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:153)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)

        at
org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419)

        at
com.sap.it.gizmos.diag.TribesConfigurator.run(TribesConfigurator.java:109)

        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)

        at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)

        at java.util.concurrent.FutureTask.run(FutureTask.java:166)

        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

        at java.lang.Thread.run(Thread.java:782)

Caused by: java.io.IOException: Invalid argument

        at java.net.PlainDatagramSocketImpl.send(Native Method)

        at java.net.DatagramSocket.send(DatagramSocket.java:675)

        at
org.apache.catalina.tribes.membership.McastServiceImpl.send(McastServiceImpl.java:503)

        at
org.apache.catalina.tribes.membership.McastServiceImpl.send(McastServiceImpl.java:480)

        at
org.apache.catalina.tribes.membership.McastServiceImpl.start(McastServiceImpl.java:269)

        at
org.apache.catalina.tribes.membership.McastService.start(McastService.java:386)

        at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:167)

        ... 12 more

So we wrote a simple test program (attached) which fails on multi-home
machines. We also wrote another test program where we just used simple
java.net.MulticastSocket, set the multicast interface (using setInterface)
to one of the interfaces and tried to send a Datagram packet and it was
able to send.

So now we wonder:

1. How do you explicitly set the multicast interface on the group channel
in apache tribes?
2. I assume that tcpListenHost is the IP address that gets advertised when
it joins the group and mcastBindAddress is the interface used to send out
messages over a multicast socket. Is my assumption right?

Any help/pointers would be greatly appreciated.

Best Regards,
Madhav


-- 
When I tell the truth, it is not for the sake of convincing those who do
not know it, but for the sake of defending those that do

Mime
View raw message