Dear users,

 

I am trying to setup tomcat clustering/session replication between two
tomcats of version 6.0.18. The following is the cluster snippet inserted
into server.xml of both servers:

 

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                 channelSendOptions="8">

 

          <Manager
className="org.apache.catalina.ha.session.BackupManager"

                   expireSessionsOnShutdown="false"

                   notifyListenersOnReplication="true"

                   mapSendOptions="6"/>

 

          <Channel
className="org.apache.catalina.tribes.group.GroupChannel">

            <Membership
className="org.apache.catalina.tribes.membership.McastService"

                        address="228.0.0.4"

                        port="45564"

                        frequency="500"

                        dropTime="3000"/>

            <Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"

                      address="auto"

                      port="5000"

                      selectorTimeout="100"

                      maxThreads="6"/>

 

            <Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

              <Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender
" timeout="60000"/>

            </Sender>

 

            <Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetec
tor"/>

            <Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch
15Interceptor"/>

            <Interceptor
className="org.apache.catalina.tribes.group.interceptors.ThroughputInter
ceptor"/>

          </Channel>

 

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

 
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;
"/>

 

          <Deployer
className="org.apache.catalina.ha.deploy.FarmWarDeployer"

                    tempDir="/tmp/war-temp/"

                    deployDir="/tmp/war-deploy/"

                    watchDir="/tmp/war-listen/"

                    watchEnabled="false"/>

 

          <ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>

        </Cluster>

 

I am having the following errors on both of my tomcats:

 

May 4, 2010 5:51:46 AM org.apache.catalina.connector.CoyoteAdapter
service

SEVERE: An exception or error occurred in the container during the
request processing

java.lang.NullPointerException

        at
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java
:348)

        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
86)

        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)

        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)

        at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)

        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:
697)

        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.
java:889)

        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:690)

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

 

 

WARNING: Member send is failing for:tcp://{-84, 16, -68, 46}:5000 ;
Setting to suspect and retrying.

May 4, 2010 5:54:13 AM
org.apache.catalina.tribes.tipis.LazyReplicatedMap publishEntryInfo

SEVERE: Unable to replicate backup
key:B90703FBD00D77B21937383FBE71CBF1.tomcatA to
backup:org.apache.catalina.tribes.membership.MemberImpl[tcp://{-84, 16,
-68, 46}:5000,{-84, 16, 

-68, 46},5000, alive=4660,id={-63 85 -65 15 -86 -78 66 26 -74 -118 51
-13 -50 97 102 -103 }, payload={}, command={}, domain={}, ]. Reason:Send
failed, attempt:2 max:1; Faulty memb

ers:tcp://{-84, 16, -68, 46}:5000; 

org.apache.catalina.tribes.ChannelException: Send failed, attempt:2
max:1; Faulty members:tcp://{-84, 16, -68, 46}:5000; 

        at
org.apache.catalina.tribes.transport.nio.ParallelNioSender.doLoop(Parall
elNioSender.java:172)

        at
org.apache.catalina.tribes.transport.nio.ParallelNioSender.sendMessage(P
arallelNioSender.java:78)

        at
org.apache.catalina.tribes.transport.nio.PooledParallelSender.sendMessag
e(PooledParallelSender.java:53)

        at
org.apache.catalina.tribes.transport.ReplicationTransmitter.sendMessage(
ReplicationTransmitter.java:80)

        at
org.apache.catalina.tribes.group.ChannelCoordinator.sendMessage(ChannelC
oordinator.java:78)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan
nelInterceptorBase.java:75)

        at
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.send
Message(ThroughputInterceptor.java:61)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan
nelInterceptorBase.java:75)

        at
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor
.sendMessage(MessageDispatchInterceptor.java:73)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan
nelInterceptorBase.java:75)

        at
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.sendMes
sage(TcpFailureDetector.java:87)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan
nelInterceptorBase.java:75)

        at
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:216
)

        at
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:175
)

        at
org.apache.catalina.tribes.tipis.LazyReplicatedMap.publishEntryInfo(Lazy
ReplicatedMap.java:158)

        at
org.apache.catalina.tribes.tipis.AbstractReplicatedMap.mapMemberAdded(Ab
stractReplicatedMap.java:677)

        at
org.apache.catalina.tribes.tipis.AbstractReplicatedMap.replyRequest(Abst
ractReplicatedMap.java:494)

        at
org.apache.catalina.tribes.group.RpcChannel.messageReceived(RpcChannel.j
ava:124)

        at
org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChann
el.java:269)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(
ChannelInterceptorBase.java:79)

        at
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.message
Received(TcpFailureDetector.java:110)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(
ChannelInterceptorBase.java:79)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(
ChannelInterceptorBase.java:79)

        at
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.mess
ageReceived(ThroughputInterceptor.java:86)

        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(
ChannelInterceptorBase.java:79)

        at
org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(Chan
nelCoordinator.java:241)

        at
org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(Re
ceiverBase.java:225)

        at
org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel
(NioReplicationTask.java:188)

        at
org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioRepli
cationTask.java:91)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:886)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:908)

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

Caused by: org.apache.catalina.tribes.RemoteProcessException: Received a
failed ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA

 

Session replication is not working as expected for me. I am using the
apache webserver as SLB for the tomcats. 

 

I have been debugging the above problems for a long time now but haven't
found the solution yet. 

 

Any ideas of what might be the problem? I am suspecting that the tomcats
are not communicating well through the multicast address but I am not
sure.

 

Thanks for your help,

 

Regards,

Josef 

Reply via email to