Author: chetanm
Date: Wed Jul  1 11:18:55 2015
New Revision: 1688622

URL: http://svn.apache.org/r1688622
Log:
OAK-3062 - VersionGC failing on Mongo with CursorNotFoundException

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

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java?rev=1688622&r1=1688621&r2=1688622&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
 Wed Jul  1 11:18:55 2015
@@ -58,6 +58,11 @@ import static org.apache.jackrabbit.oak.
 public class MongoVersionGCSupport extends VersionGCSupport {
     private static final Logger LOG = 
LoggerFactory.getLogger(MongoVersionGCSupport.class);
     private final MongoDocumentStore store;
+    /**
+     * Disables the index hint sent to MongoDB.
+     */
+    private final boolean disableIndexHint =
+            Boolean.getBoolean("oak.mongo.disableVersionGCIndexHint");
 
     public MongoVersionGCSupport(MongoDocumentStore store) {
         super(store);
@@ -72,6 +77,10 @@ public class MongoVersionGCSupport exten
                                 
.put(NodeDocument.MODIFIED_IN_SECS).lessThan(NodeDocument.getModifiedInSecs(lastModifiedTime))
                         .get();
         DBCursor cursor = 
getNodeCollection().find(query).setReadPreference(ReadPreference.secondaryPreferred());
+        if (!disableIndexHint) {
+            cursor.hint(new BasicDBObject(NodeDocument.DELETED_ONCE, 1));
+        }
+
         return CloseableIterable.wrap(transform(cursor, new Function<DBObject, 
NodeDocument>() {
             @Override
             public NodeDocument apply(DBObject input) {


Reply via email to