JBoss Cache version: 1.4.1.SP2

This relates to an issue I am having with Hibernate:

http://forum.hibernate.org/viewtopic.php?p=2343598

When I'm using pessimistic locking, the following code will work:
        public static void main(String[] args) throws Exception {
  |             UserTransaction tx= new 
DummyUserTransaction(DummyTransactionManager.getInstance());
  |             TreeCache tree = new TreeCache();
  |             PropertyConfigurator config = new PropertyConfigurator();
  |             config.configure(tree, "treecache.xml");
  |             tree.startService(); // kick start tree cache
  | 
  |             try {
  |                     tx.begin();
  |                     tree.put (fqn("/parent/child"), "item", 1 
,option(true));
  |                     tree.remove(fqn("/parent"), option(false));
  |                     tree.remove (fqn("/parent/child"), option(false));
  |                     tx.commit();
  |             }
  |             catch(Throwable ex) {
  |                     ex.printStackTrace();
  |                try { tx.rollback(); } catch(Throwable t) {}
  |             } finally{
  |                     tree.stopService();
  |             }
  |     }
  |     
  |     private static Fqn fqn(String s){
  |             return Fqn.fromString(s);
  |     }
  |     
  |     private static Option option(boolean failSilently){
  |                Option option = new Option();
  |                     option.setFailSilently( failSilently );
  |                     option.setDataVersion(new DataVersion(){
  | 
  |                             public boolean newerThan(DataVersion arg0) {
  |                                     return false;
  |                             }} );
  |                     return option;
  |     }

But with optimistic locking, the last remove call will cause the following 
exception:
org.jboss.cache.CacheException: Unable to find parent node with Fqn /parent
  |     at 
org.jboss.cache.interceptors.OptimisticNodeInterceptor.removeNode(OptimisticNodeInterceptor.java:218)
  |     at 
org.jboss.cache.interceptors.OptimisticNodeInterceptor.invoke(OptimisticNodeInterceptor.java:110)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.EvictionInterceptor.invoke(EvictionInterceptor.java:88)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.OptimisticCreateIfNotExistsInterceptor.invoke(OptimisticCreateIfNotExistsInterceptor.java:69)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.OptimisticValidatorInterceptor.invoke(OptimisticValidatorInterceptor.java:84)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.OptimisticLockingInterceptor.invoke(OptimisticLockingInterceptor.java:126)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:365)
  |     at 
org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:160)
  |     at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |     at 
org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:183)
  |     at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:5776)
  |     at org.jboss.cache.TreeCache.remove(TreeCache.java:3855)
  |     at org.jboss.cache.TreeCache.remove(TreeCache.java:3438)
  |     at com.medq.test.TestTreeCache.main(TestTreeCache.java:48)
  | 

Is it just a fluke that it works with pessimistic locking, or is optimistic 
locking not behaving as it should?

Note: The code above reproduces what Hibernate does when it evicts entities.

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4026973
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to