[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