You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2015/07/01 13:18:55 UTC

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

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