jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Esteban Franqueiro (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (JCR-935) ConcurrentModificationException during logout (cont'd)
Date Mon, 17 Sep 2007 18:57:43 GMT

    [ https://issues.apache.org/jira/browse/JCR-935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12524579
] 

efranqueiro edited comment on JCR-935 at 9/17/07 11:56 AM:
------------------------------------------------------------------

Regarding the NPE that Pablo mentioned, it looks like a race condition, because the code first
checks for != null, and then you get an NPE. The problem seems to disappear by synchronizing
the pull(), connect(), reconnect(), disconnect(), isConnected(), isStale() and hasOverlayedState()
methods of the class ItemState. According to the results of the test Pablo mentioned, it seems
that sync'ing these methods doesn't add too much serialization. Still, we're wondering what
do you all think about this, because although it works in the test, we don't know if there's
a better (or may be correct) way of solving this issue.
Regards,

Esteban

      was (Author: efranqueiro):
    Regarding the NPE that Pablo mentioned, it looks like a race condition, because the code
first checks for != null, and then you get an NPE. The problem seems to disappear by synchronizing
the pull(), connect(), reconnect(), disconnect(), isConnected(), isStale() and hasOverlayedState()
methods. According to the results of the test Pablo mentioned, it seems that sync'ing these
methods doesn't add too much serialization. Still. we're wondering what do you all think about
this, because although it works in the test, we don't know if there's a better (or may be
correct) way of solving this issue.
Regards,

Esteban
  
> ConcurrentModificationException during logout (cont'd)
> ------------------------------------------------------
>
>                 Key: JCR-935
>                 URL: https://issues.apache.org/jira/browse/JCR-935
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>            Reporter: Pablo Rios
>
> I "seldom" get a CME running ConcurrentReadWriteTest.testReadWrite test.
> Following are different stack traces of two runs:
>  
> Exception in thread "Thread-9" 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 org.apache.commons.collections.map.AbstractReferenceMap$ReferenceValues.toArray(AbstractReferenceMap.java:543)
>  at java.util.Collections$UnmodifiableCollection.toArray(Unknown Source)
>  at java.util.Collections$UnmodifiableCollection.toArray(Unknown Source)
>  at org.apache.jackrabbit.core.state.LocalItemStateManager.dispose(LocalItemStateManager.java:341)
>  at org.apache.jackrabbit.core.state.SessionItemStateManager.dispose(SessionItemStateManager.java:316)
>  at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1269)
>  at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:379)
>  at org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:114)
>  at java.lang.Thread.run(Unknown Source)
> Exception in thread "Thread-9" java.util.ConcurrentModificationException
> 	at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.checkMod(AbstractReferenceMap.java:761)
> 	at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.nextEntry(AbstractReferenceMap.java:770)
> 	at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceValuesIterator.next(AbstractReferenceMap.java:829)
> 	at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceValues.toArray(AbstractReferenceMap.java:544)
> 	at java.util.Collections$UnmodifiableCollection.toArray(Unknown Source)
> 	at java.util.Collections$UnmodifiableCollection.toArray(Unknown Source)
> 	at org.apache.jackrabbit.core.state.LocalItemStateManager.dispose(LocalItemStateManager.java:341)
> 	at org.apache.jackrabbit.core.state.SessionItemStateManager.dispose(SessionItemStateManager.java:316)
> 	at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1269)
> 	at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:379)
> 	at org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:114)
> 	at java.lang.Thread.run(Unknown Source)
> My working copy is revision 538918 with both JCR-314 patches applied, using FineGrainedISMLocking
strategy.
> I run this test manually from within Eclipse 3.2.1 / JRE 1.5.0_10-b03.
> The workstation were I run this test has an Intel Dual-Core Xeon 5130 2 GHz. To able
to compare this CPU with another, with the default params of this test (NUM_NODES = 5, NUM_THREADS
= 5, RUN_NUM_SECONDS = 20), the number of operations are ~ #writes performed: 300-400, #reads
performed: 4700000 - 4900000.
> Regards,
> Pablo

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message