]
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: