[ 
https://issues.apache.org/jira/browse/OAK-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-1650:
-----------------------------

    Attachment: ReplicaCrashResilienceLargeTxTest.java

The reported exception can be reproduced by running 
ReplicaCrashResilienceLargeTxTest and crashing the replica-primary while 
'saving...' is going on.

The exceptions occur right after mongo-client switched to the new primary

> NPE and MicroKernelException: The node .. does not exist, on replica primary 
> crash during save
> ----------------------------------------------------------------------------------------------
>
>                 Key: OAK-1650
>                 URL: https://issues.apache.org/jira/browse/OAK-1650
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core, mongomk
>    Affects Versions: 0.19
>         Environment: 0.20-SNAPSHOT as of March 31
>            Reporter: Stefan Egli
>             Fix For: 0.20
>
>         Attachments: ReplicaCrashResilienceLargeTxTest.java
>
>
> When crashing the replica-primary while saving a large transaction, the 
> following two exceptions occur. Had this twice in a row, thus 'sort of' 
> reproduceable. I'll attach the test case in a minute.
> {code}Mar 31, 2014 11:49:04 AM com.mongodb.DBTCPConnector setMasterAddress
> WARNING: Primary switching from localhost/127.0.0.1:12321 to 
> localhost/127.0.0.1:12322
> Writer: Created level1 node: 
> Node[NodeDelegate{tree=/replicaCrashLargeTxTest-1396259321921/2: { 
> jcr:primaryType = nt:unstructured}}]
> org.apache.jackrabbit.mk.api.MicroKernelException: 
> java.lang.NullPointerException
>       at 
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.findAndModify(MongoDocumentStore.java:483)
>       at 
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.createOrUpdate(MongoDocumentStore.java:495)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.createOrUpdateNode(Commit.java:449)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.applyToDocumentStore(Commit.java:335)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.prepare(Commit.java:212)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.apply(Commit.java:181)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:172)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:85)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:1)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.persistTransientHead(AbstractNodeStoreBranch.java:598)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.setRoot(AbstractNodeStoreBranch.java:547)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.setRoot(AbstractNodeStoreBranch.java:208)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.purge(DocumentRootBuilder.java:188)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.updated(DocumentRootBuilder.java:99)
>       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.core.SecureNodeBuilder.setProperty(SecureNodeBuilder.java:260)
>       at 
> org.apache.jackrabbit.oak.core.MutableTree.updateChildOrder(MutableTree.java:337)
>       at 
> org.apache.jackrabbit.oak.core.MutableTree.setOrderableChildren(MutableTree.java:220)
>       at org.apache.jackrabbit.oak.util.TreeUtil.addChild(TreeUtil.java:207)
>       at 
> org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.addChild(NodeDelegate.java:692)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:286)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:1)
>       at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:308)
>       at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:113)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:253)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:238)
>       at 
> org.apache.jackrabbit.oak.run.ReplicaCrashResilienceLargeTxTest$1.run(ReplicaCrashResilienceLargeTxTest.java:115)
>       at java.lang.Thread.run(Thread.java:695)
> Caused by: java.lang.NullPointerException
>       at 
> com.google.common.base.Preconditions.checkNotNull(Preconditions.java:192)
>       at 
> org.apache.jackrabbit.oak.plugins.document.util.StringValue.<init>(StringValue.java:35)
>       at 
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.addToCache(MongoDocumentStore.java:810)
>       at 
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.applyToCache(MongoDocumentStore.java:765)
>       at 
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.findAndModify(MongoDocumentStore.java:477)
>       ... 28 more
> {code}
> and:
> {code}Exception in thread "Thread-5" 
> org.apache.jackrabbit.mk.api.MicroKernelException: The node 
> 1:/replicaCrashLargeTxTest-1396259321921 does not exist or is already 
> deleted, before
> r145178ad3bd-0-1; document:
> {_id=1:/replicaCrashLargeTxTest-1396259321921,
> _modified=1396259345, :childOrder={},
> _modCount=2,
> _commitRoot={}},
> revision order:
> 1:
>  r145178a7b35-0-1:r145178a7b1b-0-0 r145178a7b35-1-1:r145178a7b36-0-0
> 2:
>  r14517846da4-68-2:r145178a7b1b-1-0
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.checkConflicts(Commit.java:532)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.createOrUpdateNode(Commit.java:450)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.applyToDocumentStore(Commit.java:335)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.prepare(Commit.java:212)
>       at 
> org.apache.jackrabbit.oak.plugins.document.Commit.apply(Commit.java:181)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:172)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:85)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:1)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.persistTransientHead(AbstractNodeStoreBranch.java:598)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$Persisted.setRoot(AbstractNodeStoreBranch.java:547)
>       at 
> org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.setRoot(AbstractNodeStoreBranch.java:208)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.purge(DocumentRootBuilder.java:188)
>       at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.updated(DocumentRootBuilder.java:99)
>       at 
> org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.updated(MemoryNodeBuilder.java:205)
>       at 
> org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.setChildNode(MemoryNodeBuilder.java:329)
>       at 
> org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.setChildNode(MemoryNodeBuilder.java:321)
>       at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.setChildNode(SecureNodeBuilder.java:317)
>       at 
> org.apache.jackrabbit.oak.core.MutableTree.addChild(MutableTree.java:199)
>       at org.apache.jackrabbit.oak.util.TreeUtil.addChild(TreeUtil.java:204)
>       at 
> org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.addChild(NodeDelegate.java:692)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:286)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:1)
>       at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:308)
>       at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:113)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:253)
>       at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:238)
>       at 
> org.apache.jackrabbit.oak.run.ReplicaCrashResilienceLargeTxTest$1.run(ReplicaCrashResilienceLargeTxTest.java:95)
>       at java.lang.Thread.run(Thread.java:695)
> {code}



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

Reply via email to