i'm using JBCv1.1 for the hibernate secondary-cache implementation.  i'm getting a 
catastrophic exception when a rollback occurs in certain situations.  it is 
catastrophic because locks are left locked and orphaned and the tree is generally in 
an inconsistent state.

the problem is triggered by putting an Fqn, removing the same Fqn, removing the same 
Fqn again, then rolling back the transaction.  granted, that's sort of a goofy access 
pattern, however, no *reasonable* access pattern should leave the tree in an 
inconsistent state such as this.

the following simple program should be sufficient to cause the problem (i hope):import 
org.jboss.cache.TreeCache;
  | import org.jboss.cache.DummyTransactionManagerLookup;
  | import org.jboss.cache.transaction.DummyUserTransaction;
  | import org.jboss.cache.transaction.DummyTransactionManager;
  | import javax.transaction.UserTransaction;
  | 
  | /**
  |  *
  |  */
  | public class foo
  | {
  |   public static void main(String[] argv)
  |     throws Exception
  |   {
  |     TreeCache tc;
  |     UserTransaction tx;
  | 
  |     tc = new TreeCache();
  |     tc.setTransactionManagerLookup(new DummyTransactionManagerLookup());
  |     tc.start();
  |     tx = new DummyUserTransaction(DummyTransactionManager.getInstance());
  |     tx.begin();
  |     tc.put("/foo/1", "item", new Integer(1));
  |     tc.remove("/foo/1");
  |     tc.remove("/foo/1");
  |     tx.rollback();
  |   }
  | }

the exception that you'll (hopefully) see is:java.util.ConcurrentModificationException
  |         at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
  |         at java.util.LinkedList$ListItr.previous(LinkedList.java:508)
  |         at org.jboss.cache.TreeCache.rollback(TreeCache.java:2859)
  |         at 
org.jboss.cache.interceptors.TransactionInterceptor$SynchronizationHandler.afterCompletion(TransactionInterceptor.java:111)
  |         at 
org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:79)
  |         at 
org.jboss.cache.transaction.DummyTransaction.notifyAfterCompletion(DummyTransaction.java:240)
  |         at 
org.jboss.cache.transaction.DummyTransaction.rollback(DummyTransaction.java:82)
  |         at 
org.jboss.cache.transaction.DummyTransactionManager.rollback(DummyTransactionManager.java:137)
  |         at 
org.jboss.cache.transaction.DummyUserTransaction.rollback(DummyUserTransaction.java:80)
  |         at foo.main(foo.java:26)

thanks, and let me know if there are any other details that you need to be able to 
debug this.

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

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


-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to