[ 
https://issues.apache.org/jira/browse/OAK-1370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13886679#comment-13886679
 ] 

Michael Dürig commented on OAK-1370:
------------------------------------

Looking through the JCR API I came up with the following places returning an 
iterator:

{code}
VersionManager#merge(java.lang.String, java.lang.String, boolean)
VersionManager#merge(java.lang.String, java.lang.String, boolean, boolean)
VersionManager#merge(javax.jcr.Node)
VersionHistory#getAllLinearVersions
VersionHistory#getAllVersions
VersionHistory#getAllLinearFrozenNodes
VersionHistory#getAllFrozenNodes

NodeType#getSubtypes
NodeType#getDeclaredSubtypes
NodeTypeManager#getAllNodeTypes
NodeTypeManager#getPrimaryNodeTypes
NodeTypeManager#getMixinNodeTypes
NodeTypeManager#registerNodeTypes

QueryResult#getRows
QueryResult#getNodes

AccessControlManager#getApplicablePolicies
{code}

We need to figure out which of these are problematic and need the same kind of 
wrapping I did for  those returned by {{NodeImpl}}.

> Guard against concurrent read access through the same session
> -------------------------------------------------------------
>
>                 Key: OAK-1370
>                 URL: https://issues.apache.org/jira/browse/OAK-1370
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>             Fix For: 0.17
>
>
> OAK-687 synchronized {{SessionDelegate#perform}} to protect Oak internal data 
> structures from becoming corrupt in the case a session is accessed 
> concurrently from multiple threads. Turns out however, that there are more 
> cases we didn't consider so far: e.g. concurrently iterating over iterators 
> returned by {{Node.getNodes()}} is not captured by this mechanism. 



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to