[ 
https://issues.apache.org/jira/browse/JCR-1274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marcel Reutegger resolved JCR-1274.
-----------------------------------

    Resolution: Invalid

With resolution of JCR-1271, ItemStateReferenceCache is now thread-safe, which 
means this issue now invalid.

> ItemStateCache in SharedItemStateManager not properly synchronized when using 
> FineGrainedISMLocking
> ---------------------------------------------------------------------------------------------------
>
>                 Key: JCR-1274
>                 URL: https://issues.apache.org/jira/browse/JCR-1274
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jackrabbit-core
>            Reporter: Marcel Reutegger
>            Priority: Minor
>
> When using FineGrainedISMLocking the ItemStateCache in SharedItemStateManager 
> is not sufficiently synchronized.
> FineGrainedISMLocking allows a thread to read from the cache while a write is 
> in progress. After changes are committed the cache is updated and may 
> interfere with reading.
> Running ConcurrentCheckinMixedTransactionTest with 200 threads results in 
> endless loops for several threads. Example:
> "Thread-1136" prio=6 tid=0x2b9a5c00 nid=0x278 runnable 
> [0x2fa2f000..0x2fa2fb94]
>    java.lang.Thread.State: RUNNABLE
>         at 
> org.apache.commons.collections.map.AbstractHashedMap.getEntry(AbstractHashedMap.java:433)
>         at 
> org.apache.commons.collections.map.AbstractReferenceMap.getEntry(AbstractReferenceMap.java:404)
>         at 
> org.apache.commons.collections.map.AbstractReferenceMap.containsKey(AbstractReferenceMap.java:200)
>         at 
> org.apache.jackrabbit.core.state.ItemStateMap.contains(ItemStateMap.java:66)
>         at 
> org.apache.jackrabbit.core.state.ItemStateReferenceCache.isCached(ItemStateReferenceCache.java:91)
>         at 
> org.apache.jackrabbit.core.state.SharedItemStateManager.hasItemState(SharedItemStateManager.java:274)
>         at 
> org.apache.jackrabbit.core.state.LocalItemStateManager.hasItemState(LocalItemStateManager.java:179)
>         at 
> org.apache.jackrabbit.core.state.XAItemStateManager.hasItemState(XAItemStateManager.java:252)
>         at 
> org.apache.jackrabbit.core.version.NodeStateEx.getOrCreatePropertyState(NodeStateEx.java:246)
>         at 
> org.apache.jackrabbit.core.version.NodeStateEx.setPropertyValues(NodeStateEx.java:228)
>         at 
> org.apache.jackrabbit.core.version.NodeStateEx.setPropertyValue(NodeStateEx.java:201)
>         at 
> org.apache.jackrabbit.core.version.InternalFrozenNodeImpl.checkin(InternalFrozenNodeImpl.java:273)
>         at 
> org.apache.jackrabbit.core.version.InternalFrozenNodeImpl.checkin(InternalFrozenNodeImpl.java:249)
>         at 
> org.apache.jackrabbit.core.version.InternalVersionHistoryImpl.checkin(InternalVersionHistoryImpl.java:483)
>         at 
> org.apache.jackrabbit.core.version.AbstractVersionManager.checkin(AbstractVersionManager.java:377)
>         at 
> org.apache.jackrabbit.core.version.XAVersionManager.checkin(XAVersionManager.java:369)
>         at 
> org.apache.jackrabbit.core.version.XAVersionManager.checkin(XAVersionManager.java:158)
>         at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2993)
>         at 
> org.apache.jackrabbit.core.ConcurrentCheckinMixedTransactionTest$1$1.execute(ConcurrentCheckinMixedTransactionTest.java:67)
>         at 
> org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:110)
>         at java.lang.Thread.run(Thread.java:619)
> When DefaultISMLocking is used this situation should never occur, because the 
> SharedItemStateManager is completely locked when changes are committed.

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

Reply via email to