Re: Cluster - Session replication error: Unable to apply diff
> On 22 Apr 2015, at 02:32, Keiichi Fujino wrote: > > Fixed at r1675020. > > -- > Keiichi.Fujino Hello, Sorry for not having replied earlier. Thank you for your investigation and your bug correction. I will try to apply my test case to the trunk in the next few days, I’ll let you know if it does solve my problem. Thank you again, Théo signature.asc Description: Message signed with OpenPGP using GPGMail
Re: Cluster - Session replication error: Unable to apply diff
Fixed at r1675020. 2015-04-20 16:18 GMT+09:00 Keiichi Fujino : > This NPE has been caused by that apply the diff data to a > ReplicatedMapEntry that has not set a MapOwner. > Usually, ReplicatedMapEntry always has to have the MapOwner. > I think this is probably a bug. > Please open Bugzilla entry. > I will scrutinize the code. > > 2015-04-20 15:04 GMT+09:00 Keiichi Fujino : > >> Hi >> >> Are there other error or exception in your log? >> >> Please show us your cluster configuration in your server.xml. >> e.g. >> - What is mapSendOptions? >> - Which Interceptor do you use? >> >> >> >> 2015-04-15 3:55 GMT+09:00 Théo Chamley : >> >>> Hello, >>> >>> I have a working Tomcat 8.0.15 cluster with 3 members with the >>> BackupManager as session manager. >>> The session replication is mostly working except in a few cases. In >>> those cases, I get the following error: >>> >>> 09-Apr-2015 12:16:58.369 SEVERE [Tribes-Task-Receiver-6] >>> org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived >>> Unable to apply diff to key:3B286B4C7CA060163A00988969D21923 >>> java.lang.NullPointerException >>> at >>> org.apache.catalina.ha.session.DeltaSession.applyDiff(DeltaSession.java:164) >>> at >>> org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived(AbstractReplicatedMap.java:664) >>> at >>> org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:293) >>> at >>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >>> at >>> org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:112) >>> at >>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >>> at >>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >>> at >>> org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:89) >>> at >>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >>> at >>> org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:260) >>> at >>> org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:240) >>> at >>> org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:206) >>> at >>> org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:97) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) >>> at java.lang.Thread.run(Thread.java:745) >>> >>> >>> I was able to replicate the problem with a scenario in the application, >>> but I was not able to understand the underlying problem. >>> This happens when the user is making a very specific request and this >>> request arrives on a Tomcat where his session is not stored, forcing the >>> Tomcat to fetch the session elsewhere. >>> >>> The 3 tomcats are on the same network with a very low network latency. >>> >>> Does anybody has some advice on how to debug this problem? >>> >>> For now, I got around it with sticky sessions on mod_jk, but I find this >>> very unsatisfactory. >>> >>> Thank you in advance for your help, >>> >>> //Théo >>> >>> -- >>> Keiichi.Fujino >>> >> > > > -- > Keiichi.Fujino > -- Keiichi.Fujino
Re: Cluster - Session replication error: Unable to apply diff
This NPE has been caused by that apply the diff data to a ReplicatedMapEntry that has not set a MapOwner. Usually, ReplicatedMapEntry always has to have the MapOwner. I think this is probably a bug. Please open Bugzilla entry. I will scrutinize the code. 2015-04-20 15:04 GMT+09:00 Keiichi Fujino : > Hi > > Are there other error or exception in your log? > > Please show us your cluster configuration in your server.xml. > e.g. > - What is mapSendOptions? > - Which Interceptor do you use? > > > > 2015-04-15 3:55 GMT+09:00 Théo Chamley : > >> Hello, >> >> I have a working Tomcat 8.0.15 cluster with 3 members with the >> BackupManager as session manager. >> The session replication is mostly working except in a few cases. In those >> cases, I get the following error: >> >> 09-Apr-2015 12:16:58.369 SEVERE [Tribes-Task-Receiver-6] >> org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived >> Unable to apply diff to key:3B286B4C7CA060163A00988969D21923 >> java.lang.NullPointerException >> at >> org.apache.catalina.ha.session.DeltaSession.applyDiff(DeltaSession.java:164) >> at >> org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived(AbstractReplicatedMap.java:664) >> at >> org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:293) >> at >> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >> at >> org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:112) >> at >> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >> at >> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >> at >> org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:89) >> at >> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) >> at >> org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:260) >> at >> org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:240) >> at >> org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:206) >> at >> org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:97) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) >> at java.lang.Thread.run(Thread.java:745) >> >> >> I was able to replicate the problem with a scenario in the application, >> but I was not able to understand the underlying problem. >> This happens when the user is making a very specific request and this >> request arrives on a Tomcat where his session is not stored, forcing the >> Tomcat to fetch the session elsewhere. >> >> The 3 tomcats are on the same network with a very low network latency. >> >> Does anybody has some advice on how to debug this problem? >> >> For now, I got around it with sticky sessions on mod_jk, but I find this >> very unsatisfactory. >> >> Thank you in advance for your help, >> >> //Théo >> >> -- >> Keiichi.Fujino >> > -- Keiichi.Fujino
Re: Cluster - Session replication error: Unable to apply diff
Hi Are there other error or exception in your log? Please show us your cluster configuration in your server.xml. e.g. - What is mapSendOptions? - Which Interceptor do you use? 2015-04-15 3:55 GMT+09:00 Théo Chamley : > Hello, > > I have a working Tomcat 8.0.15 cluster with 3 members with the > BackupManager as session manager. > The session replication is mostly working except in a few cases. In those > cases, I get the following error: > > 09-Apr-2015 12:16:58.369 SEVERE [Tribes-Task-Receiver-6] > org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived > Unable to apply diff to key:3B286B4C7CA060163A00988969D21923 > java.lang.NullPointerException > at > org.apache.catalina.ha.session.DeltaSession.applyDiff(DeltaSession.java:164) > at > org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived(AbstractReplicatedMap.java:664) > at > org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:293) > at > org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) > at > org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:112) > at > org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) > at > org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) > at > org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:89) > at > org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) > at > org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:260) > at > org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:240) > at > org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:206) > at > org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:97) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > > > I was able to replicate the problem with a scenario in the application, > but I was not able to understand the underlying problem. > This happens when the user is making a very specific request and this > request arrives on a Tomcat where his session is not stored, forcing the > Tomcat to fetch the session elsewhere. > > The 3 tomcats are on the same network with a very low network latency. > > Does anybody has some advice on how to debug this problem? > > For now, I got around it with sticky sessions on mod_jk, but I find this > very unsatisfactory. > > Thank you in advance for your help, > > //Théo > > -- > Keiichi.Fujino >
Cluster - Session replication error: Unable to apply diff
Hello, I have a working Tomcat 8.0.15 cluster with 3 members with the BackupManager as session manager. The session replication is mostly working except in a few cases. In those cases, I get the following error: 09-Apr-2015 12:16:58.369 SEVERE [Tribes-Task-Receiver-6] org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived Unable to apply diff to key:3B286B4C7CA060163A00988969D21923 java.lang.NullPointerException at org.apache.catalina.ha.session.DeltaSession.applyDiff(DeltaSession.java:164) at org.apache.catalina.tribes.tipis.AbstractReplicatedMap.messageReceived(AbstractReplicatedMap.java:664) at org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:293) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:112) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) at org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:89) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:81) at org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:260) at org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:240) at org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:206) at org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:97) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) I was able to replicate the problem with a scenario in the application, but I was not able to understand the underlying problem. This happens when the user is making a very specific request and this request arrives on a Tomcat where his session is not stored, forcing the Tomcat to fetch the session elsewhere. The 3 tomcats are on the same network with a very low network latency. Does anybody has some advice on how to debug this problem? For now, I got around it with sticky sessions on mod_jk, but I find this very unsatisfactory. Thank you in advance for your help, //Théo signature.asc Description: Message signed with OpenPGP using GPGMail