[ https://issues.apache.org/jira/browse/JCR-798?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martijn Hendriks reopened JCR-798: ---------------------------------- Unfortunately, the CME still occurs: java.util.ConcurrentModificationException at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.checkMod(AbstractReferenceM ap.java:761) at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.nextEntry(AbstractReference Map.java:770) at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceValuesIterator.next(AbstractReferenceMap.jav a:829) at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceValues.toArray(AbstractReferenceMap.java:544) at java.util.Collections$UnmodifiableCollection.toArray(Collections.java:1002) at java.util.Collections$UnmodifiableCollection.toArray(Collections.java:1002) at org.apache.jackrabbit.core.state.LocalItemStateManager.dispose(LocalItemStateManager.java:343) at org.apache.jackrabbit.core.WorkspaceImpl.dispose(WorkspaceImpl.java:170) at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1225) at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:379) Regards, Martijn > ConcurrentModificationException during logout > --------------------------------------------- > > Key: JCR-798 > URL: https://issues.apache.org/jira/browse/JCR-798 > Project: Jackrabbit > Issue Type: Bug > Components: core > Environment: Jackrabbit 1.2.1 > Reporter: Martijn Hendriks > Assigned To: Stefan Guggisberg > Fix For: 1.3 > > > We regularly get the following exception: > java.util.ConcurrentModificationException > at > org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.checkMod(AbstractReferenceMap.java:761) > at > org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.hasNext(AbstractReferenceMap.java:735) > at > java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1009) > at > java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1009) > at > org.apache.jackrabbit.core.state.LocalItemStateManager.dispose(LocalItemStateManager.java:341) > at > org.apache.jackrabbit.core.WorkspaceImpl.dispose(WorkspaceImpl.java:170) > at > org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1225) > at > org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:379) > Two causes for this exception have been identified: > (Taken from an email to the dev-list from Marcel Reutegger): > > - session A reads some items I > > - session B transiently removes items in I > > - session A logs out and starts to iterate over I in LocalItemStateManager > > (LISM) > > - session B saves changes and removed items are evicted from A's LISM > > - session A gets concurrent modification exception > Another scenario is the following: > - Session A gets the iterator of the values of (the primary cache of) an > ItemStateReferenceCache in LocalItemStateManager.dispose. > - Session B then does something that triggers the CacheManager. > - The CacheManager then calls resizeAll, and evicts some items from the > secondary cache of the ItemStateReferenceCache of which the > LocalItemStateManager has a values iterator. > - The garbage collector then runs and evicts the removed items also from the > primary cache, which effectively modifies the set over which is iterated. > Regards, > Martijn Hendriks -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.