[jboss-user] [JBossCache] - Re: Cache v2.0 Alpha2: Optimistic Locking + Explicit Version

chasta do-not-reply at jboss.com
Wed Jan 17 04:33:34 EST 2007


Yep, I meant explicit versioning, sorry about that...

What seems to happen (at least one case when this has occurred) is that a node gets added, causing an update of its father node. On that point (the put() ) the WorkspaceNode receives the correct version and the 'versioningImplicit' flag is correctly set to false.
However, on commit(), the same node is fetched, and while the version object remains the same (correct) one, the flag is reset to 'true'.

One simple example for a specific operation that causes this is adding a child node using Node.addChild() (to a node which happens to reside two levels under the root node). When working w/o an open transaction (e.g., in auto-transaction per operation mode), this operation fails with the following stack trace:

  | 2007-01-17 09:25:53,579 1728  WARN  [org.jboss.cache.interceptors.TxInterceptor] (main:) Commit failed.  Clearing stale locks.
  | 2007-01-17 09:25:53,582 1731  ERROR [org.jboss.cache.interceptors.OrderedSynchronizationHandler] (main:) failed calling afterCompletion() on TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:9, tx=org.jboss.cache.transaction.DummyTransaction at 27cd63)
  | java.lang.RuntimeException: Commit failed.
  | 	at org.jboss.cache.interceptors.TxInterceptor.runCommitPhase(TxInterceptor.java:712)
  | 	at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:996)
  | 	at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1092)
  | 	at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:82)
  | 	at org.jboss.cache.transaction.DummyTransaction.notifyAfterCompletion(DummyTransaction.java:285)
  | 	at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:75)
  | 	at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:78)
  | 	at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:292)
  | 	at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:126)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:151)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:66)
  | 	at org.jboss.cache.CacheImpl.invokeMethod(CacheImpl.java:3750)
  | 	at org.jboss.cache.CacheImpl.put(CacheImpl.java:1521)
  | 	at org.jboss.cache.UnversionedNode.addChild(UnversionedNode.java:372)
  | 	at com.mazeppa.yph.tests.CustomVersionTest.phaseIn(CustomVersionTest.java:31)
  | Caused by: java.lang.ClassCastException: com.mazeppa.yph.tests.CustomVersion cannot be cast to org.jboss.cache.optimistic.DefaultDataVersion
  | 	at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.commit(OptimisticValidatorInterceptor.java:212)
  | 	at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.invoke(OptimisticValidatorInterceptor.java:68)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.OptimisticLockingInterceptor.invoke(OptimisticLockingInterceptor.java:105)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.NotificationInterceptor.invoke(NotificationInterceptor.java:22)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.TxInterceptor.handleCommitRollback(TxInterceptor.java:655)
  | 	at org.jboss.cache.interceptors.TxInterceptor.runCommitPhase(TxInterceptor.java:698)
  | 	... 35 more
  | 2007-01-17 09:25:53,588 1737  WARN  [org.jboss.cache.interceptors.TxInterceptor] (main:) Commit failed.  Clearing stale locks.
  | 2007-01-17 09:25:53,589 1738  ERROR [org.jboss.cache.interceptors.OrderedSynchronizationHandler] (main:) failed calling afterCompletion() on TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:11, tx=org.jboss.cache.transaction.DummyTransaction at 4298e)
  | java.lang.RuntimeException: Commit failed.
  | 	at org.jboss.cache.interceptors.TxInterceptor.runCommitPhase(TxInterceptor.java:712)
  | 	at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:996)
  | 	at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1092)
  | 	at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:82)
  | 	at org.jboss.cache.transaction.DummyTransaction.notifyAfterCompletion(DummyTransaction.java:285)
  | 	at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:75)
  | 	at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:78)
  | 	at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:292)
  | 	at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:126)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:151)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:66)
  | 	at org.jboss.cache.CacheImpl.invokeMethod(CacheImpl.java:3750)
  | 	at org.jboss.cache.CacheImpl.put(CacheImpl.java:1521)
  | 	at org.jboss.cache.UnversionedNode.addChild(UnversionedNode.java:372)
  | 	at com.mazeppa.yph.tests.CustomVersionTest.phaseIn(CustomVersionTest.java:31)
  | Caused by: java.lang.ClassCastException: com.mazeppa.yph.tests.CustomVersion cannot be cast to org.jboss.cache.optimistic.DefaultDataVersion
  | 	at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.commit(OptimisticValidatorInterceptor.java:212)
  | 	at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.invoke(OptimisticValidatorInterceptor.java:68)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.OptimisticLockingInterceptor.invoke(OptimisticLockingInterceptor.java:105)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.NotificationInterceptor.invoke(NotificationInterceptor.java:22)
  | 	at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:75)
  | 	at org.jboss.cache.interceptors.TxInterceptor.handleCommitRollback(TxInterceptor.java:655)
  | 	at org.jboss.cache.interceptors.TxInterceptor.runCommitPhase(TxInterceptor.java:698)
  | 	... 35 more
  | 
  | 

However, we've observed this on other cases as well, cases which involve transactions and are more difficult to reproduce.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4002658#4002658

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4002658



More information about the jboss-user mailing list