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

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

Above patch adds support for array properties of other types than long. However 
this seems to uncover a problem with the SegementMK:

{code}
MicroKernel mk = new 
NodeStoreKernel(NodeStoreFixture.SEGMENT_MK.createNodeStore());
NodeStore nodeStore = new KernelNodeStore(mk);
new Jcr(nodeStore).createRepository();
{code}

results in a NPE:

{noformat}
java.lang.NullPointerException
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeProperty(SegmentWriter.java:818)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeProperty(SegmentWriter.java:813)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1021)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter$2.childNodeChanged(SegmentWriter.java:990)
        at 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:981)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1009)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder.getNodeState(SegmentNodeBuilder.java:61)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder.updated(SegmentNodeBuilder.java:46)
        at 
org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.updated(MemoryNodeBuilder.java:205)
        at 
org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.setProperty(MemoryNodeBuilder.java:489)
        at 
org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.setProperty(MemoryNodeBuilder.java:495)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:293)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:273)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:273)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:273)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:273)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.addNode(NodeStoreKernel.java:273)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.applyJsop(NodeStoreKernel.java:176)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.applyJsop(NodeStoreKernel.java:155)
        at 
org.apache.jackrabbit.oak.kernel.NodeStoreKernel.commit(NodeStoreKernel.java:519)
        at 
org.apache.jackrabbit.oak.kernel.KernelNodeStore.commit(KernelNodeStore.java:262)
        at 
org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.persist(KernelNodeStoreBranch.java:111)
        at 
org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.persist(KernelNodeStoreBranch.java:41)
        at 
org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.persistTransientHead(AbstractNodeStoreBranch.java:625)
        at 
org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.access$000(AbstractNodeStoreBranch.java:529)
        at 
org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$BranchState.persist(AbstractNodeStoreBranch.java:352)
        at 
org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$InMemory.setRoot(AbstractNodeStoreBranch.java:476)
        at 
org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.setRoot(AbstractNodeStoreBranch.java:220)
        at 
org.apache.jackrabbit.oak.kernel.KernelRootBuilder.purge(KernelRootBuilder.java:185)
        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.spi.lifecycle.OakInitializer.initialize(OakInitializer.java:45)
        at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:512)
        at org.apache.jackrabbit.oak.jcr.Jcr.createRepository(Jcr.java:189)
{noformat}

[~jukkaz], could you have a look at this when you have some time to spare?

> NodeStoreKernel doesn't handle array properties correctly
> ---------------------------------------------------------
>
>                 Key: OAK-1916
>                 URL: https://issues.apache.org/jira/browse/OAK-1916
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-1916.patch
>
>
> {{NodeStoreKernel}} currently only supports array properties of type long. 
> For other types it will fail with an {{IllegalStateException}}. See also the 
> FIXME in the code.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to