[infinispan-issues] [JBoss JIRA] Updated: (ISPN-1243) JdbcStringBasedCacheStore closes the StateTransferManagerImpl marshaller while state transfer is in progress

Dan Berindei (JIRA) jira-events at lists.jboss.org
Mon Jul 18 03:59:24 EDT 2011


     [ https://issues.jboss.org/browse/ISPN-1243?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Berindei updated ISPN-1243:
-------------------------------

              Status: Pull Request Sent  (was: Open)
    Git Pull Request: https://github.com/infinispan/infinispan/pull/448


I changed StateTransferManagerImpl to use the reentrant flag for StreamingMarshaller.startObjectInput()
I also changed FileCacheStore to not use the reentrant flag.

NonStringKeyStateTransferTest was still failing because
1) The cache store was not "shared", but both cluster nodes were using the same in-memory DB URL.
2) StateTransferManagerImpl was writing the same entries to the DB twice, once in applyInMemoryState() and then again in applyPersistentState().

> JdbcStringBasedCacheStore closes the StateTransferManagerImpl marshaller while state transfer is in progress
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: ISPN-1243
>                 URL: https://issues.jboss.org/browse/ISPN-1243
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Loaders and Stores, Marshalling
>    Affects Versions: 5.0.0.CR7
>            Reporter: Dan Berindei
>            Assignee: Dan Berindei
>            Priority: Blocker
>             Fix For: 5.0.0.FINAL
>
>
> We use the same marshaller instance both in StateTransferManagerImpl and in JdbcStringBasedCacheStore, but RiverMarshaller is not reentrant, so when JdbcStringBasedCacheStore starts unmarshalling its entry it invalidates the marshaller for StateTransferManagerImpl:
> Incoming-2,Infinispan-Cluster,NodeB-1353 at 2229, prio=5, in group 'Thread Pools', status: 'runnable'
>   java.lang.Thread.State: RUNNABLE
> 	  at org.jboss.marshalling.AbstractUnmarshaller.start(AbstractUnmarshaller.java:91)
> 	  at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1181)
> 	  at org.infinispan.marshall.jboss.GenericJBossMarshaller.startObjectInput(GenericJBossMarshaller.java:189)
> 	  at org.infinispan.marshall.VersionAwareMarshaller.startObjectInput(VersionAwareMarshaller.java:162)
> 	  at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:119)
> 	  at org.infinispan.marshall.AbstractMarshaller.objectFromInputStream(AbstractMarshaller.java:112)
> 	  at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:88)
> 	  at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.readStoredEntry(JdbcStringBasedCacheStore.java:384)
> 	  at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.loadLockSafe(JdbcStringBasedCacheStore.java:316)
> 	  at org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore.loadLockSafe(JdbcStringBasedCacheStore.java:87)
> 	  at org.infinispan.loaders.LockSupportCacheStore.load(LockSupportCacheStore.java:130)
> 	  at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:149)
> 	  at org.infinispan.interceptors.CacheLoaderInterceptor.visitPutKeyValueCommand(CacheLoaderInterceptor.java:80)
> 	  at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
> 	  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:133)
> 	  at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60)
> 	  at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
> 	  at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:214)
> 	  at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:162)
> 	  at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
> 	  at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:104)
> 	  at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:64)
> 	  at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60)
> 	  at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	  at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:274)
> 	  at org.infinispan.CacheImpl.put(CacheImpl.java:513)
> 	  at org.infinispan.statetransfer.StateTransferManagerImpl.applyInMemoryState(StateTransferManagerImpl.java:308)
> 	  at org.infinispan.statetransfer.StateTransferManagerImpl.applyState(StateTransferManagerImpl.java:280)
> 	  at org.infinispan.remoting.InboundInvocationHandlerImpl.applyState(InboundInvocationHandlerImpl.java:230)
> 	  at org.infinispan.remoting.transport.jgroups.JGroupsTransport.setState(JGroupsTransport.java:615)
> 	  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)
>           ...

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the infinispan-issues mailing list