[
https://issues.apache.org/jira/browse/JCR-2650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13019772#comment-13019772
]
Jukka Zitting commented on JCR-2650:
------------------------------------
Nice work! It looks like you proactively fixed the following deadlock scenario
that we ran into with Jackrabbit 2.0:
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.jackrabbit.core.state.NodeState.copy(NodeState.java:117)
- waiting to lock <0xffffffff69f83dc0> (a
org.apache.jackrabbit.core.state.NodeState)
- locked <0xffffffff69f83d80> (a
org.apache.jackrabbit.core.state.NodeState)
at org.apache.jackrabbit.core.state.ItemState.pull(ItemState.java:156)
- locked <0xffffffff69f83d80> (a
org.apache.jackrabbit.core.state.NodeState)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.stateCreated(SessionItemStateManager.java:907)
at
org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyStateCreated(StateChangeDispatcher.java:92)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.stateCreated(LocalItemStateManager.java:426)
at
org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyStateCreated(StateChangeDispatcher.java:92)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.stateCreated(SharedItemStateManager.java:397)
at
org.apache.jackrabbit.core.state.ItemState.notifyStateCreated(ItemState.java:235)
at
org.apache.jackrabbit.core.state.ChangeLog.persisted(ChangeLog.java:320)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:775)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1488)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:349)
at
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:324)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:328)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1141)
java.lang.Thread.State: BLOCKED (on object monitor)
at
org.apache.jackrabbit.core.state.NodeState.getPropertyNames(NodeState.java:436)
- waiting to lock <0xffffffff69f83d80> (a
org.apache.jackrabbit.core.state.NodeState)
at org.apache.jackrabbit.core.NodeImpl.makePersistent(NodeImpl.java:802)
- locked <0xffffffff69f83dc0> (a
org.apache.jackrabbit.core.state.NodeState)
at
org.apache.jackrabbit.core.ItemImpl.persistTransientItems(ItemImpl.java:661)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1126)
- locked <0xfffffffef2bc04d8> (a com.day.crx.core.CRXSessionImpl)
at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:920)
> don't silently merge session-local transient changes with external changes
> before save().
> -----------------------------------------------------------------------------------------
>
> Key: JCR-2650
> URL: https://issues.apache.org/jira/browse/JCR-2650
> Project: Jackrabbit Content Repository
> Issue Type: Improvement
> Components: jackrabbit-core
> Reporter: Stefan Guggisberg
> Fix For: 2.2.0
>
> Attachments: JCR-2650 (cleaned).patch, JCR-2650.patch
>
>
> currently, external changes (i.e. changes committed by other sessions) are
> silently merged with transient changes. this might potentially cause
> concurrency issues/inconsistent transient state (see e.g. JCR-2632).
> it would probably be better to isolate transient changes from external
> changes until they're saved (true copy-on-write).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira