You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2013/11/15 17:13:22 UTC

[jira] [Created] (OAK-1192) NPE in Versioning when a Node has a hidden child node

Alex Parvulescu created OAK-1192:
------------------------------------

             Summary: NPE in Versioning when a Node has a hidden child node
                 Key: OAK-1192
                 URL: https://issues.apache.org/jira/browse/OAK-1192
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: jcr
            Reporter: Alex Parvulescu


For OAK-1137 I had to add a hidden child node on a versionable node and I see some test failures, which would point to the fact that the hidden node will be pulled into the version store [1].

Browsing through the code is seems that the VersionEditor is in fact based on a VisibleEditor so it doesn't descend into hidden child nodes, but if a versionable node has such a child node, this will be included [0] .

I'm assuming a simple 'isHidden' check on the child name is what's missing here.

[0] http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java?view=markup#l465


[1]
{noformat}
java.lang.NullPointerException
	at org.apache.jackrabbit.oak.plugins.version.DateVersionSelector.select(DateVersionSelector.java:78)
	at org.apache.jackrabbit.oak.plugins.version.ReadWriteVersionManager.restore(ReadWriteVersionManager.java:209)
	at org.apache.jackrabbit.oak.plugins.version.VersionableState.restoreVersionedChild(VersionableState.java:376)
	at org.apache.jackrabbit.oak.plugins.version.VersionableState.restoreState(VersionableState.java:264)
	at org.apache.jackrabbit.oak.plugins.version.VersionableState.restoreChildren(VersionableState.java:395)
	at org.apache.jackrabbit.oak.plugins.version.VersionableState.restoreFrozen(VersionableState.java:313)
	at org.apache.jackrabbit.oak.plugins.version.VersionableState.restore(VersionableState.java:227)
	at org.apache.jackrabbit.oak.plugins.version.ReadWriteVersionManager.restore(ReadWriteVersionManager.java:189)
	at org.apache.jackrabbit.oak.plugins.version.VersionEditor.propertyChanged(VersionEditor.java:135)
	at org.apache.jackrabbit.oak.spi.commit.VisibleEditor.propertyChanged(VisibleEditor.java:78)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyChanged(EditorDiff.java:93)
	at org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:370)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:129)
	at org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:388)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:129)
	at org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:388)
	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
	at org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:53)
	at org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:59)
	at org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:59)
	at org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$InMemory.merge(AbstractNodeStoreBranch.java:393)
	at org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.merge(AbstractNodeStoreBranch.java:219)
	at org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.merge(KernelNodeStoreBranch.java:128)
	at org.apache.jackrabbit.oak.kernel.KernelRootBuilder.merge(KernelRootBuilder.java:141)
	at org.apache.jackrabbit.oak.kernel.KernelNodeStore.merge(KernelNodeStore.java:164)
	at org.apache.jackrabbit.oak.core.AbstractRoot.commit(AbstractRoot.java:270)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:224)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:219)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:207)
	at org.apache.jackrabbit.oak.jcr.version.VersionManagerImpl$2.perform(VersionManagerImpl.java:206)
	at org.apache.jackrabbit.oak.jcr.version.VersionManagerImpl$2.perform(VersionManagerImpl.java:1)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:128)
	at org.apache.jackrabbit.oak.jcr.version.VersionManagerImpl.restore(VersionManagerImpl.java:171)
	at org.apache.jackrabbit.oak.jcr.version.VersionManagerImpl.restore(VersionManagerImpl.java:145)
	at org.apache.jackrabbit.oak.jcr.session.NodeImpl.restore(NodeImpl.java:1083)
	at org.apache.jackrabbit.test.api.version.RestoreTest.testRestoreName(RestoreTest.java:988)
{noformat}




--
This message was sent by Atlassian JIRA
(v6.1#6144)