[ 
https://issues.apache.org/jira/browse/JCR-1440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12582054#action_12582054
 ] 

Micah Whitacre commented on JCR-1440:
-------------------------------------

I'm still trying to find a workaround or solution to this issue.  Looking at 
the code the issues comes from the fact that the map, versionItems, of 
VersionManagerImpl class is never updated/syncrhonized between the two cluster 
nodes.  The only time this method is changed is on calls to 
itemsUpdated(Collection) which is never called during the synchronization 
process.  So that map becomes stale pretty quickly when multiple nodes are 
interacting with it.

> NPE Thrown when two Cluster Nodes are hitting the same underlying database.
> ---------------------------------------------------------------------------
>
>                 Key: JCR-1440
>                 URL: https://issues.apache.org/jira/browse/JCR-1440
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: clustering, jackrabbit-core
>    Affects Versions: 1.4, core 1.4.1
>         Environment: Vista JDK 1.5.0_12.  Using Derby and Derby Client 
> 10.1.2.1
>            Reporter: Micah Whitacre
>            Priority: Critical
>         Attachments: repository1.xml, SimpleJackrabbitConflictTest.java, 
> SimpleJackRabbitTest.zip
>
>
> I've created a test that creates two repositories with clustering enabled 
> that are backed by the same database.  Using the following workflow causes a 
> NullPointerException to be thrown.
> The workflow I'm using is:
> The root node is versioned.
> ClusterNode1 creates a versioned child node named "foo".
> The test waits to make sure the syncDelay has passed so ClusterNode2 will 
> notice the newly created node.
> ClusterNode2 retrieves the "foo" child node and removes it.
> The test waits for the change ClusterNode1 to sync with that change.
> ClusterNode1 tries to create another new node however a NullPointerException 
> is thrown when the it tries to checkout the rootNode.
> java.lang.NullPointerException: null values not allowed
>       at 
> org.apache.commons.collections.map.AbstractReferenceMap.put(AbstractReferenceMap.java:251)
>       at 
> org.apache.jackrabbit.core.version.VersionManagerImpl.getItem(VersionManagerImpl.java:280)
>       at 
> org.apache.jackrabbit.core.version.XAVersionManager.getItem(XAVersionManager.java:334)
>       at 
> org.apache.jackrabbit.core.version.AbstractVersionManager.getVersion(AbstractVersionManager.java:87)
>       at 
> org.apache.jackrabbit.core.NodeImpl.getBaseVersion(NodeImpl.java:3198)
>       at org.apache.jackrabbit.core.NodeImpl.checkout(NodeImpl.java:2991)
>       at 
> com.cerner.system.configuration.repository.jcr.SimpleJackrabbitConflictTest.testNullPointerExceptionThrown(SimpleJackrabbitConflictTest.java:96)

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