You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2010/03/05 17:06:27 UTC

[jira] Commented: (JCR-1440) NPE Thrown when two Cluster Nodes are hitting the same underlying database.

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

Jukka Zitting commented on JCR-1440:
------------------------------------

In revision 919461 I added automatic invalidation of the internal version history caches based on related update events from other cluster nodes. This still needs some testing, but ideally I'd like to get rid of the previous double-load solution.

> 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 Content Repository
>          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
>            Assignee: Jukka Zitting
>            Priority: Critical
>         Attachments: jackrabbit-1.5-JCR-1440.tar.gz, jcr-1440-workaround.patch, 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.