Author: mreutegg
Date: Wed Mar  7 10:03:26 2018
New Revision: 1826092

URL: http://svn.apache.org/viewvc?rev=1826092&view=rev
Log:
OAK-7306: MongoDocumentStore: use transient DocumentStoreException type where 
appropriate

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

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java?rev=1826092&r1=1826091&r2=1826092&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
 Wed Mar  7 10:03:26 2018
@@ -27,6 +27,7 @@ import com.mongodb.MongoException;
 import com.mongodb.MongoNotPrimaryException;
 import com.mongodb.MongoSocketException;
 import com.mongodb.MongoWriteConcernException;
+import com.mongodb.WriteConcernException;
 
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException.Type;
 
@@ -153,8 +154,9 @@ class MongoUtils {
                 || t instanceof MongoWriteConcernException
                 || t instanceof MongoNotPrimaryException) {
             type = Type.TRANSIENT;
-        } else if (t instanceof MongoCommandException) {
-            int code = ((MongoCommandException) t).getErrorCode();
+        } else if (t instanceof MongoCommandException
+                || t instanceof WriteConcernException) {
+            int code = ((MongoException) t).getCode();
             if (code == 11600               // InterruptedAtShutdown
                     || code == 11601        // Interrupted
                     || code == 11602) {     // InterruptedDueToReplStateChange

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java?rev=1826092&r1=1826091&r2=1826092&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
 Wed Mar  7 10:03:26 2018
@@ -20,10 +20,12 @@ import java.io.IOException;
 
 import com.mongodb.DBCollection;
 import com.mongodb.DBObject;
+import com.mongodb.DuplicateKeyException;
 import com.mongodb.MongoCommandException;
 import com.mongodb.MongoException;
 import com.mongodb.MongoSocketException;
 import com.mongodb.ServerAddress;
+import com.mongodb.WriteConcernException;
 
 import org.apache.jackrabbit.oak.plugins.document.MongoConnectionFactory;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
@@ -133,18 +135,29 @@ public class MongoUtilsTest {
     public void documentStoreExceptionType() {
         assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
IOException()));
         assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
MongoException("message")));
-        assertEquals(GENERIC, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(42)));
-        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11600)));
-        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11601)));
-        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11602)));
+        assertEquals(GENERIC, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(42)));
+        assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
DuplicateKeyException(response(11000), new ServerAddress(), null)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11600)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11601)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11602)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11600)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11601)));
+        assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11602)));
         assertEquals(TRANSIENT, getDocumentStoreExceptionTypeFor(new 
MongoSocketException("message", new ServerAddress())));
     }
 
-    private static MongoCommandException createMongoCommandException(int code) 
{
+    private static MongoCommandException newMongoCommandException(int code) {
+        return new MongoCommandException(response(code), new ServerAddress());
+    }
+
+    private static WriteConcernException newWriteConcernException(int code) {
+        return new WriteConcernException(response(code), new ServerAddress(), 
null);
+    }
+
+    private static BsonDocument response(int code) {
         BsonDocument response = new BsonDocument();
         response.put("code", new BsonInt32(code));
         response.put("errmsg", new BsonString("message"));
-        ServerAddress address = new ServerAddress();
-        return new MongoCommandException(response, address);
+        return response;
     }
 }


Reply via email to