[jboss-jira] [JBoss JIRA] Updated: (JBCACHE-1310) Marshalling failure with optimistic PREPARE
Brian Stansberry (JIRA)
jira-events at lists.jboss.org
Tue Mar 18 12:58:51 EDT 2008
[ http://jira.jboss.com/jira/browse/JBCACHE-1310?page=all ]
Brian Stansberry updated JBCACHE-1310:
--------------------------------------
Attachment: JBCACHE-1310.log
Attached is a more complete log file showing the error. Turns out error happens during region activation.
Test starts at line 797 of attached log. Activation starts at line 819.
Believe the problem occurs during execution of this in RegionManager:
// Get the state from any node that has it and put it
// in the main cache
if (subtreeRoot == null)
{
// We'll update this node with the state we receive
// need to obtain all necessary locks.
cache.getInvocationContext().getOptionOverrides().setCacheModeLocal(true);
subtreeRoot = cache.getRoot().addChild(fqn);
cache.getInvocationContext().getOptionOverrides().setCacheModeLocal(false);
}
Perhaps the issue is the logic isn't handling the setCacheModeLocal(true) properly? That would result in an empty modification list for the implicit transaction associated with this call.
If you follow the attached log after the initial failure, you'll see it tries to re-inactivate the region, which doesn't go smoothly. Separate issue, IMHO not so critical.
> Marshalling failure with optimistic PREPARE
> -------------------------------------------
>
> Key: JBCACHE-1310
> URL: http://jira.jboss.com/jira/browse/JBCACHE-1310
> Project: JBoss Cache
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Optimistic Locking, Replication
> Affects Versions: 2.1.0.GA
> Reporter: Brian Stansberry
> Assigned To: Manik Surtani
> Priority: Critical
> Fix For: 2.2.0.GA
>
> Attachments: JBCACHE-1310.log
>
>
> When an optimistic tx with no modifications commits a replication message is sent, and the message fails to marshall (using region based marshalling):
> 17:14:00,901 DEBUG OptimisticReplicationInterceptor:186 - (127.0.0.1:42972): broadcasting prepare for GlobalTransaction:<127.0.0.1:42972>:568 (0 modifications
> 17:14:00,902 TRACE OptimisticReplicationInterceptor:94 - Broadcasting call MethodName: optimisticPrepare; MethodIdInteger: 18; Args: (GlobalTransaction:<127.0.0.1:42972>:568, [], null, 127.0.0.1:42972, false) to recipient list null
> 17:14:00,902 TRACE OptimisticReplicationInterceptor:119 - Setting call recipients to [127.0.0.1:42972, 127.0.0.1:42973] since the original list of recipients passed in is null.
> 17:14:00,903 TRACE RPCManagerImpl:402 - callRemoteMethods(): valid members are [127.0.0.1:42973] methods: MethodName: _replicate; MethodIdInteger: 13; Args: (MethodName: optimisticPrepare; MethodIdInteger: 18; Args: (GlobalTransaction:<127.0.0.1:42972>:568, [], null, 127.0.0.1:42972, false)) Using OOB? false
> 17:14:00,903 TRACE InactiveRegionAwareRpcDispatcher:194 - dests=[127.0.0.1:42973], method_call=MethodName: _replicate; MethodIdInteger: 13; Args: (MethodName: optimisticPrepare; MethodIdInteger: 18; Args: (GlobalTransaction:<127.0.0.1:42972>:568, [], null, 127.0.0.1:42972, false)), mode=2, timeout=20000
> 17:14:00,904 WARN TxInterceptor:1378 - Caught exception, will now set transaction to roll back
> java.lang.RuntimeException: failure to marshal argument(s)
> at org.jgroups.blocks.RpcDispatcher.callRemoteMethods(RpcDispatcher.java:206)
> at org.jgroups.blocks.RpcDispatcher.callRemoteMethods(RpcDispatcher.java:179)
> at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:412)
> at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:355)
> at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:360)
> at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:127)
> at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:88)
> at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:83)
> at org.jboss.cache.interceptors.OptimisticReplicationInterceptor.broadcastPrepare(OptimisticReplicationInterceptor.java:191)
> at org.jboss.cache.interceptors.OptimisticReplicationInterceptor.handleOptimisticPrepareMethod(OptimisticReplicationInterceptor.java:80)
> at org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:120)
> at org.jboss.cache.interceptors.Interceptor.nextInterceptor(Interceptor.java:111)
> at org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:58)
> at org.jboss.cache.interceptors.Interceptor.nextInterceptor(Interceptor.java:111)
> at org.jboss.cache.interceptors.TxInterceptor.runPreparePhase(TxInterceptor.java:1018)
> at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.beforeCompletion(TxInterceptor.java:1362)
> at org.jboss.cache.interceptors.OrderedSynchronizationHandler.beforeCompletion(OrderedSynchronizationHandler.java:61)
> at org.jboss.cache.transaction.DummyTransaction.notifyBeforeCompletion(DummyTransaction.java:261)
> at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:61)
> at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:78)
> at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:461)
> at org.jboss.cache.interceptors.TxInterceptor.handlePutDataMethod(TxInterceptor.java:275)
> at org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:69)
> at org.jboss.cache.interceptors.Interceptor.nextInterceptor(Interceptor.java:111)
> at org.jboss.cache.interceptors.CacheMgmtInterceptor.handlePutData(CacheMgmtInterceptor.java:112)
> at org.jboss.cache.interceptors.CacheMgmtInterceptor.handlePutDataMethod(CacheMgmtInterceptor.java:99)
> at org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:69)
> at org.jboss.cache.interceptors.Interceptor.nextInterceptor(Interceptor.java:111)
> at org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:73)
> at org.jboss.cache.invocation.AbstractInvocationDelegate.invoke(AbstractInvocationDelegate.java:123)
> at org.jboss.cache.invocation.AbstractInvocationDelegate.invoke(AbstractInvocationDelegate.java:64)
> at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:453)
> at org.jboss.cache.invocation.NodeInvocationDelegate.addChild(NodeInvocationDelegate.java:308)
> at org.jboss.cache.RegionManager.activateRegion(RegionManager.java:420)
> at org.jboss.cache.RegionManager.activate(RegionManager.java:335)
> at org.jboss.cache.RegionManager.activate(RegionManager.java:298)
> at org.jboss.cache.RegionImpl.activate(RegionImpl.java:82)
> at org.hibernate.cache.jbc2.BasicRegionAdapter.activateLocalClusterNode(BasicRegionAdapter.java:98)
> at org.hibernate.cache.jbc2.BasicRegionAdapter.<init>(BasicRegionAdapter.java:80)
> at org.hibernate.cache.jbc2.TransactionalDataRegionAdapter.<init>(TransactionalDataRegionAdapter.java:41)
> at org.hibernate.cache.jbc2.collection.CollectionRegionImpl.<init>(CollectionRegionImpl.java:48)
> at org.hibernate.cache.jbc2.JBossCacheRegionFactory.buildCollectionRegion(JBossCacheRegionFactory.java:131)
> at org.hibernate.test.cache.jbc2.collection.AbstractCollectionRegionAccessStrategyTestCase.setUp(AbstractCollectionRegionAccessStrategyTestCase.java:126)
> at junit.framework.TestCase.runBare(TestCase.java:125)
> at org.hibernate.junit.UnitTestCase.runBare(UnitTestCase.java:63)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.extensions.TestSetup.run(TestSetup.java:23)
> 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 org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
> at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
> at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> 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 org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
> at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
> Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> at java.util.ArrayList.RangeCheck(ArrayList.java:546)
> at java.util.ArrayList.get(ArrayList.java:321)
> at org.jboss.cache.marshall.AbstractMarshaller.extractFqn(AbstractMarshaller.java:128)
> at org.jboss.cache.marshall.AbstractMarshaller.extractFqnFromMethodCall(AbstractMarshaller.java:97)
> at org.jboss.cache.marshall.CacheMarshaller200.extractFqnRegion(CacheMarshaller200.java:257)
> at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:115)
> at org.jboss.cache.marshall.VersionAwareMarshaller.objectToByteBuffer(VersionAwareMarshaller.java:184)
> at org.jboss.cache.marshall.AbstractMarshaller.objectToByteBuffer(AbstractMarshaller.java:71)
> at org.jgroups.blocks.RpcDispatcher.callRemoteMethods(RpcDispatcher.java:199)
> ... 68 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list