[jboss-user] [JBossCache] - Re: NPE when using optimistic locking with JbossCache 1.4.0.

rkrol do-not-reply at jboss.com
Wed Jan 3 11:14:39 EST 2007


I have a similar problem with a data version class mismatch.
I work with Hibernate 3.2.1 and JBossCache 1.4.1.CR1 (both downloaded yesterday).

Hibernate configuration :
 - hibernate.cache.provider_class=org.hibernate.cache.OptimisticTreeCacheProvider
 - objects are cached in transactional mode (<class...> ...)

TreeCache configuration is the hibernate-recommended-config.xml with :
 - OPTIMISTIC NodeLockingScheme
 - INVALIDATION_ASYNC CacheMode

My application seems to work when persistent objects are created, readed, updated... but not deleted :(

Here is the stack trace :

  | java.lang.RuntimeException:
  |         at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.beforeCompletion(TxInterceptor.java:1146)
  |         at org.jboss.cache.interceptors.OrderedSynchronizationHandler.beforeCompletion(OrderedSynchronizationHandler.java:75)
  |         at org.objectweb.jotm.SubCoordinator.doBeforeCompletion(SubCoordinator.java:1520)
  |         at org.objectweb.jotm.SubCoordinator.commit_one_phase(SubCoordinator.java:433)
  |         at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:248)
  |         at org.objectweb.jotm.Current.commit(Current.java:526)
  |         at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:787)
  |         at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
  |         at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
  |         at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:266)
  |         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
  |         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
  |         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
  |         at $Proxy2.supprimerCatalogue(Ljava.lang.String;)V(Unknown Source)
  |         at clara.prototype.applicatif.hibernatoo.impl.GererCataloguesImpl.supprimerCatalogue(GererCataloguesImpl.java:90)
  |         at clara.prototype.presentation.strutsoo.gerercatalogues.SupprimerCatalogueAction.execute(SupprimerCatalogueAction.java:63)
  |         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
  |         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
  |         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
  |         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
  |         at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
  |         at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
  |         at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
  |         at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
  |         at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
  |         at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
  | Caused by: org.jboss.cache.optimistic.DataVersioningException: Attempting to apply data version of type class org.hibernate.cache.OptimisticTreeCache$
  | NonLockingDataVersion to a node [fqn = /clara/prototype/persistant/hibernatoo/Catalogue/clara.prototype.persistant.hibernatoo.Catalogue#9] that already contains version of type class org.hibernate.cache.OptimisticTreeCache$DataVersionAdapter
  |         at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.simpleValidate(OptimisticValidatorInterceptor.java:144)
  |         at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.validateNodes(OptimisticValidatorInterceptor.java:110)
  |         at org.jboss.cache.interceptors.OptimisticValidatorInterceptor.invoke(OptimisticValidatorInterceptor.java:75)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.OptimisticLockingInterceptor.invoke(OptimisticLockingInterceptor.java:99)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.InvalidationInterceptor.invoke(InvalidationInterceptor.java:60)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.TxInterceptor.runPreparePhase(TxInterceptor.java:859)
  |         at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.beforeCompletion(TxInterceptor.java:1124)
  |         at org.jboss.cache.interceptors.OrderedSynchronizationHandler.beforeCompletion(OrderedSynchronizationHandler.java:75)
  |         at org.objectweb.jotm.SubCoordinator.doBeforeCompletion(SubCoordinator.java:1520)
  |         at org.objectweb.jotm.SubCoordinator.commit_one_phase(SubCoordinator.java:433)
  |         at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:248)
  |         at org.objectweb.jotm.Current.commit(Current.java:526)
  |         at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:787)
  |         at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
  |         at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
  |         at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:266)
  |         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
  |         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
  |         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
  |         at $Proxy2.supprimerCatalogue(Ljava.lang.String;)V(Unknown Source)
  |         at clara.prototype.applicatif.hibernatoo.impl.GererCataloguesImpl.supprimerCatalogue(GererCataloguesImpl.java:90)
  |         at clara.prototype.presentation.strutsoo.gerercatalogues.SupprimerCatalogueAction.execute(SupprimerCatalogueAction.java:63)
  |         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
  |         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
  |         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
  |         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
  | 

I've tried different CacheMode(INVALIDATION_SYNC, REPL_ASYNC, and REPL_SYNC) because of JBCACHE-806, but the same exception appears in all cases.
May be I've forget somehting on the configuration...
What solution do you propose ?

PS : My application works if Hibernate and JBC are configured in Pessimistic mode (hibernate.cache.provider_class=org.hibernate.cache.TreeCacheProvider, NodeLockingScheme=PESSIMISTIC)


Thanks.

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

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



More information about the jboss-user mailing list