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

Chetan Mehrotra commented on OAK-1641:
--------------------------------------

bq. I'd rather ensure consistent reads at the cost of blocking the call for a 
couple of seconds until a new primary is elected.

Makes sense to be safer there in terms of consistency. For now we can switch 
readPreference to primary per default. And then see how we can add waits for 
handling the case when switch over is in progress

> 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)

Reply via email to