Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-992

NPE when running FlatTreeWithAceForSamePrincipalTest on MongoMK

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.8
    • 0.9
    • core, mongomk
    • None

    Description

      Running

      benchmark FlatTreeWithAceForSamePrincipalTest Oak-Mongo
      

      results in a NPE [1] after a couple of minutes.

      My initial analysis showed that MicroKernel.getNodes() returns null in KernelNodeState.init(). The requested revision was br140e35028e6-0-1, AFAICS a branch revision that doesn't exist any more.

      Looking at the base state in KernelNodeStoreBranch.InMemory.merge() a couple of stack frames below I found the following:

      base = /@r140e350df05-0-1 children: 5 id: /@r140e350df05-0-1 ...
      base.getChildNode("a") = /a@r140e350df05-0-1 children: 9223372036854775807 id: /a@r140e350df05-0-1 ...
      base.getChildNode("a").getChildNode("node9285") = /a/node9285@br140e35028e6-0-1 children: 1 id: /a/node9285@r140e34fdff7-0-1 ...
      

      Obviously obtaining child node9285 from /a switches from a trunk revision to a branch revision. This look suspicious.

      [1]

      java.lang.NullPointerException
      	at org.apache.jackrabbit.mk.json.JsopTokenizer.<init>(JsopTokenizer.java:41)
      	at org.apache.jackrabbit.mk.json.JsopTokenizer.<init>(JsopTokenizer.java:47)
      	at org.apache.jackrabbit.oak.kernel.KernelNodeState.init(KernelNodeState.java:160)
      	at org.apache.jackrabbit.oak.kernel.KernelNodeState.getProperty(KernelNodeState.java:251)
      	at org.apache.jackrabbit.oak.spi.state.AbstractNodeState.getName(AbstractNodeState.java:88)
      	at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.isOfMatchingType(PropertyIndexEditor.java:165)
      	at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.enter(PropertyIndexEditor.java:189)
      	at org.apache.jackrabbit.oak.spi.commit.VisibleEditor.enter(VisibleEditor.java:58)
      	at org.apache.jackrabbit.oak.spi.commit.CompositeEditor.enter(CompositeEditor.java:66)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:49)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:141)
      	at org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:139)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:141)
      	at org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstBaseState(EmptyNodeState.java:139)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeDeleted(EditorDiff.java:141)
      	at org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:380)
      	at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
      	at org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:50)
      	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.kernel.KernelNodeStoreBranch$InMemory.merge(KernelNodeStoreBranch.java:287)
      	at org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.merge(KernelNodeStoreBranch.java:136)
      	at org.apache.jackrabbit.oak.core.AbstractRoot$2.run(AbstractRoot.java:245)
      	at org.apache.jackrabbit.oak.core.AbstractRoot$2.run(AbstractRoot.java:241)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at javax.security.auth.Subject.doAs(Subject.java:337)
      	at org.apache.jackrabbit.oak.core.AbstractRoot.commit(AbstractRoot.java:240)
      	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:281)
      	at org.apache.jackrabbit.oak.jcr.SessionImpl$8.perform(SessionImpl.java:394)
      	at org.apache.jackrabbit.oak.jcr.SessionImpl$8.perform(SessionImpl.java:391)
      	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:117)
      	at org.apache.jackrabbit.oak.jcr.SessionImpl.perform(SessionImpl.java:117)
      	at org.apache.jackrabbit.oak.jcr.SessionImpl.save(SessionImpl.java:391)
      	at org.apache.jackrabbit.oak.benchmark.FlatTreeWithAceForSamePrincipalTest.afterSuite(FlatTreeWithAceForSamePrincipalTest.java:89)
      	at org.apache.jackrabbit.oak.benchmark.AbstractTest.tearDown(AbstractTest.java:165)
      	at org.apache.jackrabbit.oak.benchmark.FlatTreeWithAceForSamePrincipalTest.tearDown(FlatTreeWithAceForSamePrincipalTest.java:31)
      	at org.apache.jackrabbit.oak.benchmark.AbstractTest.runTest(AbstractTest.java:130)
      	at org.apache.jackrabbit.oak.benchmark.AbstractTest.run(AbstractTest.java:91)
      	at org.apache.jackrabbit.oak.benchmark.FlatTreeWithAceForSamePrincipalTest.run(FlatTreeWithAceForSamePrincipalTest.java:31)
      	at org.apache.jackrabbit.oak.benchmark.BenchmarkRunner.main(BenchmarkRunner.java:126)
      	at org.apache.jackrabbit.oak.run.Main.main(Main.java:61)
      

      Attachments

        Activity

          People

            mreutegg Marcel Reutegger
            mduerig Michael Dürig
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: