"jiwils" wrote : I have some code that uses "getChildrenNames", and this works well except when other threads via the same VM (or a remote one upon replication) change the children a node has by removing or adding children. | | The issue is that to use a set, you need to use an iterator. When the underlying set is modified, the iterator properly throws a ConcurrentModificationException. To avoid this, I attempted to use the "toArray" method on the returned set, but this suffers from the same problem. | | In other code where I have used iterators, I have used the "clone" method to avoid this problem, but since the Set interface is returned by this method, I can not use that. I tried to see the type actually returned through "getClass().getName()", but it is an UnmodifiableSet returned from the Collections class, and it does not implement Cloneable either. | | Can anyone suggest a course of action to take? I do not care if what I get back remains up to date as changes are made to the cache node, I only care that it is up-to-date when I invoke "getChildrenNames".
Although the set in unmodifiable for the caller, the cache itself can modify it. You should copy the set immediately, e.g. Set children=new TreeSet(result), no need for a clone(). View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3856702#3856702 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3856702 ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development