[infinispan-dev] frequent stack in testsuite
Manik Surtani
msurtani at redhat.com
Thu Jun 9 11:47:03 EDT 2011
+1 to writing the error marker to the stream. At least prevent false alarms.
Re: unit testing our externalizers, Galder, any thoughts there?
Sent from my mobile phone
On 9 Jun 2011, at 16:24, Dan Berindei <dan.berindei at gmail.com> wrote:
> I don't think it's an externalizer issue, as I also see some
> exceptions on the node that generates state:
>
> 2011-06-09 18:16:18,250 ERROR
> [org.infinispan.remoting.transport.jgroups.JGroupsTransport]
> (STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,NodeA-57902)
> ISPN00095: Caught while responding to state transfer request
> org.infinispan.statetransfer.StateTransferException:
> java.util.concurrent.TimeoutException:
> STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,NodeA-57902 could
> not obtain exclusive processing lock after 10 seconds. Locks in
> question are java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock at a35c90[Read
> locks = 1] and java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock at 111fb7f[Unlocked]
> at org.infinispan.statetransfer.StateTransferManagerImpl.generateState(StateTransferManagerImpl.java:177)
> at org.infinispan.remoting.InboundInvocationHandlerImpl.generateState(InboundInvocationHandlerImpl.java:248)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.getState(JGroupsTransport.java:585)
> at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:690)
> at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:771)
> at org.jgroups.JChannel.up(JChannel.java:1484)
> at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1074)
> at org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER$StateProviderHandler.process(STREAMING_STATE_TRANSFER.java:651)
> at org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER$StateProviderThreadSpawner$1.run(STREAMING_STATE_TRANSFER.java:580)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:636)
> Caused by: java.util.concurrent.TimeoutException:
> STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,NodeA-57902 could
> not obtain exclusive processing lock after 10 seconds. Locks in
> question are java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock at a35c90[Read
> locks = 1] and java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock at 111fb7f[Unlocked]
> at org.infinispan.remoting.transport.jgroups.JGroupsDistSync.acquireProcessingLock(JGroupsDistSync.java:100)
> at org.infinispan.statetransfer.StateTransferManagerImpl.generateTransactionLog(StateTransferManagerImpl.java:204)
> at org.infinispan.statetransfer.StateTransferManagerImpl.generateState(StateTransferManagerImpl.java:167)
> ... 11 more
>
> I guess we could write an error marker in the stream to prevent the
> EOFException on the receiving side, but the end result would be the
> same.
>
> Dan
>
>
> On Thu, Jun 9, 2011 at 5:58 PM, Sanne Grinovero <sanne at infinispan.org> wrote:
>> Hello all,
>> if I happen to look at the console while the tests are running, I see
>> this exception popup very often:
>>
>> 2011-06-09 15:32:18,092 ERROR [JGroupsTransport]
>> (Incoming-1,Infinispan-Cluster,NodeB-32230) ISPN00096: Caught while
>> requesting or applying state
>> org.infinispan.statetransfer.StateTransferException:
>> java.io.EOFException: Read past end of file
>> at org.infinispan.statetransfer.StateTransferManagerImpl.applyState(StateTransferManagerImpl.java:333)
>> at org.infinispan.remoting.InboundInvocationHandlerImpl.applyState(InboundInvocationHandlerImpl.java:230)
>> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.setState(JGroupsTransport.java:602)
>> at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:711)
>> at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:771)
>> at org.jgroups.JChannel.up(JChannel.java:1441)
>> at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1074)
>> at org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.connectToStateProvider(STREAMING_STATE_TRANSFER.java:523)
>> at org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.handleStateRsp(STREAMING_STATE_TRANSFER.java:462)
>> at org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.up(STREAMING_STATE_TRANSFER.java:223)
>> at org.jgroups.protocols.FRAG2.up(FRAG2.java:189)
>> at org.jgroups.protocols.FC.up(FC.java:479)
>> at org.jgroups.protocols.pbcast.GMS.up(GMS.java:891)
>> at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:246)
>> at org.jgroups.protocols.UNICAST.handleDataReceived(UNICAST.java:613)
>> at org.jgroups.protocols.UNICAST.up(UNICAST.java:294)
>> at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:703)
>> at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:133)
>> at org.jgroups.protocols.FD.up(FD.java:275)
>> at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:275)
>> at org.jgroups.protocols.MERGE2.up(MERGE2.java:209)
>> at org.jgroups.protocols.Discovery.up(Discovery.java:291)
>> at org.jgroups.protocols.TP.passMessageUp(TP.java:1102)
>> at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1658)
>> at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1640)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> at java.lang.Thread.run(Thread.java:662)
>> Caused by: java.io.EOFException: Read past end of file
>> at org.jboss.marshalling.SimpleDataInput.eofOnRead(SimpleDataInput.java:126)
>> at org.jboss.marshalling.SimpleDataInput.readUnsignedByteDirect(SimpleDataInput.java:263)
>> at org.jboss.marshalling.SimpleDataInput.readUnsignedByte(SimpleDataInput.java:224)
>> at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
>> at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
>> at org.infinispan.marshall.jboss.GenericJBossMarshaller.objectFromObjectStream(GenericJBossMarshaller.java:192)
>> at org.infinispan.marshall.VersionAwareMarshaller.objectFromObjectStream(VersionAwareMarshaller.java:190)
>> at org.infinispan.statetransfer.StateTransferManagerImpl.processCommitLog(StateTransferManagerImpl.java:230)
>> at org.infinispan.statetransfer.StateTransferManagerImpl.applyTransactionLog(StateTransferManagerImpl.java:252)
>> at org.infinispan.statetransfer.StateTransferManagerImpl.applyState(StateTransferManagerImpl.java:322)
>> ... 27 more
>>
>> But I'm not sure if it's an issue, as it seems tests are not failing.
>> I consider a "Read past end of file" quite suspiciously looking; would
>> it be possible to think that some internal Externalizer is writing
>> less bytes than what it's attempting to read?
>> Is there something clever I could do to understand which object the
>> marshaller is trying to read when something like this is happening?
>> I've found debugging this quite hard.
>>
>> Also, it doesn't look like our externalizers have a good test
>> coverage; They are likely implicitly tested as I assume that nothing
>> would work if they aren't, but still it looks like we have no explicit
>> tests for them?
>>
>> Cheers,
>> Sanne
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
More information about the infinispan-dev
mailing list