[jboss-user] [JBossCache] - Remove is not properly deleting child nodes when run in a tr

dh717 do-not-reply at jboss.com
Mon Feb 25 17:44:00 EST 2008


I have code that (within a  single transaction) removes a node and then puts a new value into the cache that is a child of the removed node. After the transaction completes, the cache contains the new value AND the child nodes that should have been removed when the parent node was removed. If I execute the same code without a transaction, it works correctly, only the new value is present and all of the original children of the removed node are gone. The following code is a simple demonstration of the problem:


public class RemoveNodeTxProblem {
    public static void main(String[] args) throws Exception {
        CacheFactory<String, Object> factory = DefaultCacheFactory.getInstance();

        Cache<String, Object> cache = factory.createCache(new XmlConfigurationParser().parseFile(args[0]), false);
        cache.create();
        cache.start();

        Fqn rootFqn = Fqn.fromString("/a/b");
        cache.put(rootFqn, "c", true);

        TransactionManager txMgr = cache.getConfiguration().getRuntimeConfig().getTransactionManager();
        txMgr.begin();
        cache.removeNode(rootFqn);
        cache.put(rootFqn, "d", "Blah");
        txMgr.commit();

        System.out.println("c = " + cache.get(rootFqn, "c"));  // c = true when tx is used, null when tx is not used
        System.out.println("d = " + cache.get(rootFqn, "d"));

        cache.stop();
    }
}


Is this a bug? If not, is there a way to get the non-transactional behavior (deleted children don't come back after a new child is added) in a transactional way? I'm running JBoss Cache 2.0.0 GA and JOTM 2.0.9 as my transaction manager.

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

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



More information about the jboss-user mailing list