[
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.