In Tomcat 6, use DeltaManager or BackupManager
Filip
Lia wrote:
Hi everybody, <<...>> <<...>>
I am using
- Tomcat 6.0.18 ( but I’ve also tested the same scenario with Tomcat
6.0.16 and Tomcat 6.0.14 and I got the same problem);
- in cluster ( two machines);
- on Debian x64, 4.0.
When using DeltaManager (with or without sticky sessions) the cluster
works fine, but for some special installations I would like to have
“useDirtyFlag=’false’”. I understand that “dirtyFlag” is used only
with SimpleTcpReplicationManager, so I changed the server.xml and
context.xml, to enable it.
When starting with a single machine, everything is fine, no error
message, but when having another node in cluster, the replication
fails with the error listed below.
Aug 6, 2008 4:40:57 PM
org.apache.catalina.ha.session.SimpleTcpReplicationManager readSession
SEVERE: Failed to deserialize the session!
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:157)
at
java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:903)
at
org.apache.catalina.ha.session.SimpleTcpReplicationManager.readSession(SimpleTcpReplicationManager.java:426)
at
org.apache.catalina.ha.session.SimpleTcpReplicationManager.messageReceived(SimpleTcpReplicationManager.java:612)
at
org.apache.catalina.ha.session.SimpleTcpReplicationManager.messageDataReceived(SimpleTcpReplicationManager.java:651)
at
org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:87)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:899)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:880)
at
org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:269)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
at
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:110)
I’ve attached server.xml and context.xml files from one machine in
cluster.
Analyzing the error stack trace, I’ve read the Tomcat source code, and
I found this, in “SimpleTcpReplicationManager”:
424 if (session==null) {
425 session = createSession(null,false, false);
426 sessions.remove(session.getIdInternal());
427 }
And the signature for createSession method says:
protected Session createSession(String sessionId, boolean notify,
boolean setId)
{
It seems to me that createSession is called with parameter setId=
false, and then NullPointer exception is thrown at the next line,
because the code tries to search the session Id that was set to Null
one line above. I changed the line 425 into session =
createSession(null,true, true);
Now I get no NullPointerException any more, but I suppose this is not
the fair solution. Is it something wrong in my cluster configuration,
can I avoid the Null point in some other way, or
SimpleTcpReplicationManager is no longer supported?
Thanks in advance,
Lia Domide
------------------------------------------------------------------------
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]