Author: mreutegg
Date: Thu Sep 27 08:50:24 2018
New Revision: 1842078

URL: http://svn.apache.org/viewvc?rev=1842078&view=rev
Log:
OAK-7485: DocumentNodeStore doesn't work with shared Atlas MongoDB replica set

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java?rev=1842078&r1=1842077&r2=1842078&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoStatus.java
 Thu Sep 27 08:50:24 2018
@@ -22,6 +22,7 @@ import com.mongodb.BasicDBObject;
 import com.mongodb.ClientSessionOptions;
 import com.mongodb.MongoClient;
 import com.mongodb.MongoClientException;
+import com.mongodb.MongoCommandException;
 import com.mongodb.MongoQueryException;
 import com.mongodb.ReadConcern;
 import com.mongodb.client.MongoCollection;
@@ -236,8 +237,18 @@ public class MongoStatus implements Serv
 
     private BasicDBObject getServerStatus() {
         if (serverStatus == null) {
-            serverStatus = client.getDatabase(dbName).runCommand(
-                    new BasicDBObject("serverStatus", 1), BasicDBObject.class);
+            try {
+                serverStatus = client.getDatabase(dbName).runCommand(
+                        new BasicDBObject("serverStatus", 1), 
BasicDBObject.class);
+            } catch (MongoCommandException e) {
+                if (e.getErrorCode() == -1) {
+                    // OAK-7485: workaround when running on
+                    // MongoDB Atlas shared instances
+                    serverStatus = new BasicDBObject();
+                } else {
+                    throw e;
+                }
+            }
         }
         return serverStatus;
     }


Reply via email to