[
https://issues.apache.org/jira/browse/OAK-1641?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14113504#comment-14113504
]
Marcel Reutegger commented on OAK-1641:
---------------------------------------
After changing the default for PREFER_SECONDARY_IF_OLD_ENOUGH to {{primary()}}
things improved, but I still see 'NOT FOUND' messages. I can see successful
calls from Oak to MongoDB, but on failover some of the changes are not present
on the new primary. This is expected with the default write concern
(ACKNOWLEDGED). But even with 'w=2' (REPLICA_ACKNOWLEDGED) successful changes
done by Oak are sometimes not completely present on a new primary. This may
have to do with the findAndModify() command we use. It is not possible to pass
a write concern and the
[docs|http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/#comparisons-with-the-update-method]
say the default write concern is used. I'm not sure if this refers to the
default in general (ACKNOWLEDGED) or the current default set on the collection
in the driver. AFAICS the Java driver does not pick up the current write
concern of the collection when it executes a command.
> Mongo: Un-/CheckedExecutionException on replica-primary crash
> -------------------------------------------------------------
>
> Key: OAK-1641
> URL: https://issues.apache.org/jira/browse/OAK-1641
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: mongomk
> Affects Versions: 0.19
> Environment: 0.20-SNAPSHOT as of March 28, 2014
> Reporter: Stefan Egli
> Assignee: Marcel Reutegger
> Attachments: ReplicaCrashResilienceTest.java,
> ReplicaCrashResilienceTest.java, mongoUrl_fixture_patch_oak1641.diff
>
>
> Testing with a mongo replicaSet setup: 1 primary, 1 secondary and 1
> secondary-arbiter-only.
> Running a simple test which has 2 threads: a writer thread and a reader
> thread.
> The following exception occurs when crashing mongo primary
> {code}
> com.google.common.util.concurrent.UncheckedExecutionException:
> com.google.common.util.concurrent.UncheckedExecutionException:
> com.mongodb.MongoException$Network: Read operation to server
> localhost/127.0.0.1:12322 failed on database resilienceTest
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199)
> at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
> at
> com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4721)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(DocumentNodeStore.java:593)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.hasChildNode(DocumentNodeState.java:164)
> at
> org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.hasChildNode(MemoryNodeBuilder.java:301)
> at
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.hasChildNode(SecureNodeBuilder.java:299)
> at
> org.apache.jackrabbit.oak.plugins.tree.AbstractTree.hasChild(AbstractTree.java:267)
> at
> org.apache.jackrabbit.oak.core.MutableTree.getChild(MutableTree.java:147)
> at org.apache.jackrabbit.oak.util.TreeUtil.getTree(TreeUtil.java:171)
> at
> org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.getTree(NodeDelegate.java:865)
> at
> org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.getChild(NodeDelegate.java:339)
> at
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:274)
> 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.ReplicaCrashResilienceTest$1.run(ReplicaCrashResilienceTest.java:103)
> at java.lang.Thread.run(Thread.java:695)
> Caused by: com.google.common.util.concurrent.UncheckedExecutionException:
> com.mongodb.MongoException$Network: Read operation to server
> localhost/127.0.0.1:12322 failed on database resilienceTest
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199)
> at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
> at
> com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4721)
> at
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.find(MongoDocumentStore.java:267)
> at
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.find(MongoDocumentStore.java:234)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(DocumentNodeStore.java:802)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$3.call(DocumentNodeStore.java:596)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$3.call(DocumentNodeStore.java:1)
> at
> com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4724)
> at
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
> at
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
> at
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
> ... 19 more
> Caused by: com.mongodb.MongoException$Network: Read operation to server
> localhost/127.0.0.1:12322 failed on database resilienceTest
> at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:253)
> at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:264)
> at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:264)
> at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
> at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
> at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
> at com.mongodb.DBCollection.findOne(DBCollection.java:728)
> at com.mongodb.DBCollection.findOne(DBCollection.java:670)
> at
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.findUncached(MongoDocumentStore.java:304)
> at
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore$1.call(MongoDocumentStore.java:270)
> at
> org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore$1.call(MongoDocumentStore.java:1)
> at
> com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4724)
> at
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
> at
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
> at
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
> ... 31 more
> Caused by: java.net.ConnectException: Connection refused
> at java.net.PlainSocketImpl.socketConnect(Native Method)
> at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382)
> at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241)
> at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228)
> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:431)
> at java.net.Socket.connect(Socket.java:527)
> at com.mongodb.DBPort._open(DBPort.java:223)
> at com.mongodb.DBPort.go(DBPort.java:125)
> at com.mongodb.DBPort.call(DBPort.java:92)
> at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:244)
> ... 46 more{code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)