While load testing our clustered Tomcats, we are seeing the following stack
trace in our catalina.out occasionally, but not regularly:

 

Jul 16, 2010 3:34:49 PM org.apache.catalina.ha.session.DeltaManager
messageReceived

SEVERE: Manager [localhost#/urs]: Unable to receive message through TCP
channel

java.lang.IllegalStateException: removeAttribute: Session already
invalidated

        at
org.apache.catalina.ha.session.DeltaSession.removeAttribute(DeltaSession.jav
a:557)

        at
org.apache.catalina.ha.session.DeltaRequest.execute(DeltaRequest.java:167)

        at
org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager
.java:1403)

        at
org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.jav
a:1357)

        at
org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager
.java:1093)

        at
org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(Cluste
rSessionListener.java:87)

        at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster
.java:901)

        at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster
.java:882)

        at
org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.j
ava:269)

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

        at
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageRece
ived(TcpFailureDetector.java:110)

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

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

        at
org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelC
oordinator.java:241)

        at
org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(Receiv
erBase.java:225)

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

        at
org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicati
onTask.java:91)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:886)

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

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

 

Under what conditions would this occur? Could it be that a session diff is
being transmitted, but the session it relates to has been invalidated by the
time the diff is processed (via a user logout for example)? Or could it be
that a timeout has been reached???

 

Here is our session replication settings:

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

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

                                stateTransferTimeout="10"

                                expireSessionsOnShutdown="false"

                                notifyListenersOnReplication="true"/>

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

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

                                        address="[IP redaxed]"

                                        domain="BERT-DEV"

                                        port="45564"

                                        frequency="500"

                                        dropTime="3000"/>

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

                                        address="${ClusterIP}"

                                        port="4000"

                                        autoBind="100"

                                        selectorTimeout="5000"

                                        maxThreads="6"/>

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

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

                                </Sender>

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

                                <Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15In
terceptor"/>

                        </Channel>

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

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

                </Cluster>

 

Thanks,

Matt.

Reply via email to