You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Cris Daniluk <cr...@gmail.com> on 2006/12/01 16:48:38 UTC

serialization error

I've turned on Tomcat clustering on an existing application, and thus
the session-bound user DataContext is being serialized across the
wire. Whenever I connect to a Tomcat node, the nodes that are
replicated to report the attached exception. Based on the line number
(Cayenne 1.2.1), it looks like the objectStore has null elements in
it, which does not make any sense.

Any ideas?

Cris


ERROR [org.apache.catalina.cluster.tcp.TcpReplicationThread[1]] -
2006-12-01 10:44:42,264 Manager [/integration]: Unable to receive
message through TCP channel
java.lang.NullPointerException
        at org.objectstyle.cayenne.access.DataContext.readObject(DataContext.java:1806)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:334)
        at org.apache.catalina.cluster.session.DeltaRequest.readExternal(DeltaRequest.java:246)
        at org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest(DeltaManager.java:697)
        at org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1572)
        at org.apache.catalina.cluster.session.DeltaManager.messageReceived(DeltaManager.java:1522)
        at org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(DeltaManager.java:1271)
        at org.apache.catalina.cluster.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:85)
        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpCluster.java:1167)
        at org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceived(ClusterReceiverBase.java:426)
        at org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:107)
        at org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpReplicationThread.java:138)
        at org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationThread.java:69)

Re: serialization error

Posted by Andrus Adamchik <an...@objectstyle.org>.
Just had a moment to poke around this code. The stack implies that  
ObjectStore has nulls in its object map. And of course I can't  
reproduce it via simple serialization tests. We'll have to see what  
debugging in your environment reveals.

Andrus


On Dec 1, 2006, at 7:06 PM, Cris Daniluk wrote:
> This is also not during Tomcat startup. Initially I suspected it might
> be because the Configuration hadn't been initialized on all of the
> nodes, but that doesn't seem to be the case. It's hard to debug on a
> cluster :)
>
> Right now I've changed to debug on STABLE-1.2 HEAD. The NPE is on line
> 1807 there. I'll let you know if I find anything
>
> Cris
>
> On 12/1/06, Andrus Adamchik <an...@objectstyle.org> wrote:
>> Hi Cris,
>>
>> I am leaving to catch the train now. I'll take a look over the
>> weekend. This is strange indeed - we had issues in the past on
>> deserialization during Tomcat startup, but those were due to
>> ClassLoaders not being in the right state. This scenario is  
>> different.
>>
>> Andrus
>>
>> On Dec 1, 2006, at 6:48 PM, Cris Daniluk wrote:
>>
>> > I've turned on Tomcat clustering on an existing application, and  
>> thus
>> > the session-bound user DataContext is being serialized across the
>> > wire. Whenever I connect to a Tomcat node, the nodes that are
>> > replicated to report the attached exception. Based on the line  
>> number
>> > (Cayenne 1.2.1), it looks like the objectStore has null elements in
>> > it, which does not make any sense.
>> >
>> > Any ideas?
>> >
>> > Cris
>> >
>> >
>> > ERROR [org.apache.catalina.cluster.tcp.TcpReplicationThread[1]] -
>> > 2006-12-01 10:44:42,264 Manager [/integration]: Unable to receive
>> > message through TCP channel
>> > java.lang.NullPointerException
>> >        at org.objectstyle.cayenne.access.DataContext.readObject
>> > (DataContext.java:1806)
>> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native  
>> Method)
>> >        at sun.reflect.NativeMethodAccessorImpl.invoke
>> > (NativeMethodAccessorImpl.java:39)
>> >        at sun.reflect.DelegatingMethodAccessorImpl.invoke
>> > (DelegatingMethodAccessorImpl.java:25)
>> >        at java.lang.reflect.Method.invoke(Method.java:585)
>> >        at java.io.ObjectStreamClass.invokeReadObject
>> > (ObjectStreamClass.java:946)
>> >        at java.io.ObjectInputStream.readSerialData
>> > (ObjectInputStream.java:1809)
>> >        at java.io.ObjectInputStream.readOrdinaryObject
>> > (ObjectInputStream.java:1719)
>> >        at java.io.ObjectInputStream.readObject0
>> > (ObjectInputStream.java:1305)
>> >        at java.io.ObjectInputStream.defaultReadFields
>> > (ObjectInputStream.java:1908)
>> >        at java.io.ObjectInputStream.readSerialData
>> > (ObjectInputStream.java:1832)
>> >        at java.io.ObjectInputStream.readOrdinaryObject
>> > (ObjectInputStream.java:1719)
>> >        at java.io.ObjectInputStream.readObject0
>> > (ObjectInputStream.java:1305)
>> >        at java.io.ObjectInputStream.defaultReadFields
>> > (ObjectInputStream.java:1908)
>> >        at java.io.ObjectInputStream.readSerialData
>> > (ObjectInputStream.java:1832)
>> >        at java.io.ObjectInputStream.readOrdinaryObject
>> > (ObjectInputStream.java:1719)
>> >        at java.io.ObjectInputStream.readObject0
>> > (ObjectInputStream.java:1305)
>> >        at java.io.ObjectInputStream.readObject
>> > (ObjectInputStream.java:348)
>> >        at org.apache.catalina.cluster.session.DeltaRequest
>> > $AttributeInfo.readExternal(DeltaRequest.java:334)
>> >        at
>> > org.apache.catalina.cluster.session.DeltaRequest.readExternal
>> > (DeltaRequest.java:246)
>> >        at
>> > org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest
>> > (DeltaManager.java:697)
>> >        at
>> >  
>> org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA
>> > (DeltaManager.java:1572)
>> >        at
>> > org.apache.catalina.cluster.session.DeltaManager.messageReceived
>> > (DeltaManager.java:1522)
>> >        at
>> >  
>> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived
>> > (DeltaManager.java:1271)
>> >        at
>> >  
>> org.apache.catalina.cluster.session.ClusterSessionListener.messageRec 
>> e
>> > ived(ClusterSessionListener.java:85)
>> >        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive
>> > (SimpleTcpCluster.java:1167)
>> >        at
>> >  
>> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceiv 
>> e
>> > d(ClusterReceiverBase.java:426)
>> >        at org.apache.catalina.cluster.io.ObjectReader.execute
>> > (ObjectReader.java:107)
>> >        at
>> > org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel
>> > (TcpReplicationThread.java:138)
>> >        at org.apache.catalina.cluster.tcp.TcpReplicationThread.run
>> > (TcpReplicationThread.java:69)
>> >
>>
>>
>


Re: serialization error

Posted by Cris Daniluk <cr...@gmail.com>.
This is also not during Tomcat startup. Initially I suspected it might
be because the Configuration hadn't been initialized on all of the
nodes, but that doesn't seem to be the case. It's hard to debug on a
cluster :)

Right now I've changed to debug on STABLE-1.2 HEAD. The NPE is on line
1807 there. I'll let you know if I find anything

Cris

On 12/1/06, Andrus Adamchik <an...@objectstyle.org> wrote:
> Hi Cris,
>
> I am leaving to catch the train now. I'll take a look over the
> weekend. This is strange indeed - we had issues in the past on
> deserialization during Tomcat startup, but those were due to
> ClassLoaders not being in the right state. This scenario is different.
>
> Andrus
>
> On Dec 1, 2006, at 6:48 PM, Cris Daniluk wrote:
>
> > I've turned on Tomcat clustering on an existing application, and thus
> > the session-bound user DataContext is being serialized across the
> > wire. Whenever I connect to a Tomcat node, the nodes that are
> > replicated to report the attached exception. Based on the line number
> > (Cayenne 1.2.1), it looks like the objectStore has null elements in
> > it, which does not make any sense.
> >
> > Any ideas?
> >
> > Cris
> >
> >
> > ERROR [org.apache.catalina.cluster.tcp.TcpReplicationThread[1]] -
> > 2006-12-01 10:44:42,264 Manager [/integration]: Unable to receive
> > message through TCP channel
> > java.lang.NullPointerException
> >        at org.objectstyle.cayenne.access.DataContext.readObject
> > (DataContext.java:1806)
> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >        at sun.reflect.NativeMethodAccessorImpl.invoke
> > (NativeMethodAccessorImpl.java:39)
> >        at sun.reflect.DelegatingMethodAccessorImpl.invoke
> > (DelegatingMethodAccessorImpl.java:25)
> >        at java.lang.reflect.Method.invoke(Method.java:585)
> >        at java.io.ObjectStreamClass.invokeReadObject
> > (ObjectStreamClass.java:946)
> >        at java.io.ObjectInputStream.readSerialData
> > (ObjectInputStream.java:1809)
> >        at java.io.ObjectInputStream.readOrdinaryObject
> > (ObjectInputStream.java:1719)
> >        at java.io.ObjectInputStream.readObject0
> > (ObjectInputStream.java:1305)
> >        at java.io.ObjectInputStream.defaultReadFields
> > (ObjectInputStream.java:1908)
> >        at java.io.ObjectInputStream.readSerialData
> > (ObjectInputStream.java:1832)
> >        at java.io.ObjectInputStream.readOrdinaryObject
> > (ObjectInputStream.java:1719)
> >        at java.io.ObjectInputStream.readObject0
> > (ObjectInputStream.java:1305)
> >        at java.io.ObjectInputStream.defaultReadFields
> > (ObjectInputStream.java:1908)
> >        at java.io.ObjectInputStream.readSerialData
> > (ObjectInputStream.java:1832)
> >        at java.io.ObjectInputStream.readOrdinaryObject
> > (ObjectInputStream.java:1719)
> >        at java.io.ObjectInputStream.readObject0
> > (ObjectInputStream.java:1305)
> >        at java.io.ObjectInputStream.readObject
> > (ObjectInputStream.java:348)
> >        at org.apache.catalina.cluster.session.DeltaRequest
> > $AttributeInfo.readExternal(DeltaRequest.java:334)
> >        at
> > org.apache.catalina.cluster.session.DeltaRequest.readExternal
> > (DeltaRequest.java:246)
> >        at
> > org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest
> > (DeltaManager.java:697)
> >        at
> > org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA
> > (DeltaManager.java:1572)
> >        at
> > org.apache.catalina.cluster.session.DeltaManager.messageReceived
> > (DeltaManager.java:1522)
> >        at
> > org.apache.catalina.cluster.session.DeltaManager.messageDataReceived
> > (DeltaManager.java:1271)
> >        at
> > org.apache.catalina.cluster.session.ClusterSessionListener.messageRece
> > ived(ClusterSessionListener.java:85)
> >        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive
> > (SimpleTcpCluster.java:1167)
> >        at
> > org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceive
> > d(ClusterReceiverBase.java:426)
> >        at org.apache.catalina.cluster.io.ObjectReader.execute
> > (ObjectReader.java:107)
> >        at
> > org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel
> > (TcpReplicationThread.java:138)
> >        at org.apache.catalina.cluster.tcp.TcpReplicationThread.run
> > (TcpReplicationThread.java:69)
> >
>
>

Re: serialization error

Posted by Andrus Adamchik <an...@objectstyle.org>.
Hi Cris,

I am leaving to catch the train now. I'll take a look over the  
weekend. This is strange indeed - we had issues in the past on  
deserialization during Tomcat startup, but those were due to  
ClassLoaders not being in the right state. This scenario is different.

Andrus

On Dec 1, 2006, at 6:48 PM, Cris Daniluk wrote:

> I've turned on Tomcat clustering on an existing application, and thus
> the session-bound user DataContext is being serialized across the
> wire. Whenever I connect to a Tomcat node, the nodes that are
> replicated to report the attached exception. Based on the line number
> (Cayenne 1.2.1), it looks like the objectStore has null elements in
> it, which does not make any sense.
>
> Any ideas?
>
> Cris
>
>
> ERROR [org.apache.catalina.cluster.tcp.TcpReplicationThread[1]] -
> 2006-12-01 10:44:42,264 Manager [/integration]: Unable to receive
> message through TCP channel
> java.lang.NullPointerException
>        at org.objectstyle.cayenne.access.DataContext.readObject 
> (DataContext.java:1806)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at java.io.ObjectStreamClass.invokeReadObject 
> (ObjectStreamClass.java:946)
>        at java.io.ObjectInputStream.readSerialData 
> (ObjectInputStream.java:1809)
>        at java.io.ObjectInputStream.readOrdinaryObject 
> (ObjectInputStream.java:1719)
>        at java.io.ObjectInputStream.readObject0 
> (ObjectInputStream.java:1305)
>        at java.io.ObjectInputStream.defaultReadFields 
> (ObjectInputStream.java:1908)
>        at java.io.ObjectInputStream.readSerialData 
> (ObjectInputStream.java:1832)
>        at java.io.ObjectInputStream.readOrdinaryObject 
> (ObjectInputStream.java:1719)
>        at java.io.ObjectInputStream.readObject0 
> (ObjectInputStream.java:1305)
>        at java.io.ObjectInputStream.defaultReadFields 
> (ObjectInputStream.java:1908)
>        at java.io.ObjectInputStream.readSerialData 
> (ObjectInputStream.java:1832)
>        at java.io.ObjectInputStream.readOrdinaryObject 
> (ObjectInputStream.java:1719)
>        at java.io.ObjectInputStream.readObject0 
> (ObjectInputStream.java:1305)
>        at java.io.ObjectInputStream.readObject 
> (ObjectInputStream.java:348)
>        at org.apache.catalina.cluster.session.DeltaRequest 
> $AttributeInfo.readExternal(DeltaRequest.java:334)
>        at  
> org.apache.catalina.cluster.session.DeltaRequest.readExternal 
> (DeltaRequest.java:246)
>        at  
> org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest 
> (DeltaManager.java:697)
>        at  
> org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA 
> (DeltaManager.java:1572)
>        at  
> org.apache.catalina.cluster.session.DeltaManager.messageReceived 
> (DeltaManager.java:1522)
>        at  
> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived 
> (DeltaManager.java:1271)
>        at  
> org.apache.catalina.cluster.session.ClusterSessionListener.messageRece 
> ived(ClusterSessionListener.java:85)
>        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive 
> (SimpleTcpCluster.java:1167)
>        at  
> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceive 
> d(ClusterReceiverBase.java:426)
>        at org.apache.catalina.cluster.io.ObjectReader.execute 
> (ObjectReader.java:107)
>        at  
> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel 
> (TcpReplicationThread.java:138)
>        at org.apache.catalina.cluster.tcp.TcpReplicationThread.run 
> (TcpReplicationThread.java:69)
>