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 mr...@apache.org on 2015/03/23 16:38:10 UTC

svn commit: r1668671 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java test/java/org/apache/jackrabbit/oak/plugins/document/mongo/QueryHintTest.java

Author: mreutegg
Date: Mon Mar 23 15:38:10 2015
New Revision: 1668671

URL: http://svn.apache.org/r1668671
Log:
OAK-2668: Ability to disable index hints for MongoDB

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

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1668671&r1=1668670&r2=1668671&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java Mon Mar 23 15:38:10 2015
@@ -155,6 +155,13 @@ public class MongoDocumentStore implemen
             Long.getLong("oak.mongo.maxDeltaForModTimeIdxSecs",-1);
 
     /**
+     * Disables the index hint sent to MongoDB.
+     * This overrides {@link #maxDeltaForModTimeIdxSecs}.
+     */
+    private final boolean disableIndexHint =
+            Boolean.getBoolean("oak.mongo.disableIndexHint");
+
+    /**
      * Duration in milliseconds after which a mongo query will be terminated.
      * <p>
      * If this value is -1 no timeout is being set at all, if it is 1 or greater
@@ -228,7 +235,8 @@ public class MongoDocumentStore implemen
         cacheStats = new CacheStats(nodesCache, "Document-Documents", builder.getWeigher(),
                 builder.getDocumentCacheSize());
         LOG.info("Configuration maxReplicationLagMillis {}, " +
-                "maxDeltaForModTimeIdxSecs {}",maxReplicationLagMillis, maxDeltaForModTimeIdxSecs);
+                "maxDeltaForModTimeIdxSecs {}, disableIndexHint {}",
+                maxReplicationLagMillis, maxDeltaForModTimeIdxSecs, disableIndexHint);
     }
 
     private static String checkVersion(DB db) {
@@ -513,7 +521,10 @@ public class MongoDocumentStore implemen
         TreeLock lock = acquireExclusive(parentId != null ? parentId : "");
         final long start = PERFLOG.start();
         try {
-            DBCursor cursor = dbCollection.find(query).sort(BY_ID_ASC).hint(hint);
+            DBCursor cursor = dbCollection.find(query).sort(BY_ID_ASC);
+            if (!disableIndexHint) {
+                cursor.hint(hint);
+            }
             if (maxQueryTimeMS > 0) {
                 // OAK-2614: set maxTime if maxQueryTimeMS > 0
                 cursor.maxTime(maxQueryTimeMS, TimeUnit.MILLISECONDS);
@@ -959,6 +970,10 @@ public class MongoDocumentStore implemen
         return maxDeltaForModTimeIdxSecs;
     }
 
+    boolean getDisableIndexHint() {
+        return disableIndexHint;
+    }
+
     Iterable<? extends Map.Entry<CacheValue, ? extends CachedNodeDocument>> getCacheEntries() {
         if (nodesCache instanceof OffHeapCache) {
             return Iterables.concat(nodesCache.asMap().entrySet(),

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/QueryHintTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/QueryHintTest.java?rev=1668671&r1=1668670&r2=1668671&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/QueryHintTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/QueryHintTest.java Mon Mar 23 15:38:10 2015
@@ -71,6 +71,8 @@ public class QueryHintTest {
 
     @Test
     public void testHints() throws Exception{
+        assertFalse(mongoDS.getDisableIndexHint());
+
         long delta = mongoDS.getMaxDeltaForModTimeIdxSecs();
         clock.waitUntil(TimeUnit.SECONDS.toMillis(delta + 10));