Author: chetanm
Date: Thu Nov  3 10:13:12 2016
New Revision: 1767852

URL: http://svn.apache.org/viewvc?rev=1767852&view=rev
Log:
OAK-5053 - Provide support for enabling fastResultSize via OSGi config

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/QueryEngineSettingsMBean.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsMBeanImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsServiceTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/QueryEngineSettingsMBean.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/QueryEngineSettingsMBean.java?rev=1767852&r1=1767851&r2=1767852&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/QueryEngineSettingsMBean.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/QueryEngineSettingsMBean.java
 Thu Nov  3 10:13:12 2016
@@ -69,4 +69,13 @@ public interface QueryEngineSettingsMBea
      */
     void setFailTraversal(boolean failTraversal);
 
+    /**
+     * Whether the query result size should return an estimation (or -1 if 
disabled) for large queries
+     *
+     * @return true if enabled
+     */
+    boolean isFastQuerySize();
+
+    void setFastQuerySize(boolean fastQuerySize);
+
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java?rev=1767852&r1=1767851&r2=1767852&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
 Thu Nov  3 10:13:12 2016
@@ -64,6 +64,10 @@ public class QueryEngineSettings impleme
     private boolean sql2Optimisation = 
             Boolean.parseBoolean(System.getProperty(SQL2_OPTIMISATION_FLAG, 
"true"));
 
+    private static final String OAK_FAST_QUERY_SIZE = "oak.fastQuerySize";
+    static final boolean DEFAULT_FAST_QUERY_SIZE = 
Boolean.getBoolean(OAK_FAST_QUERY_SIZE);
+    private boolean fastQuerySize = DEFAULT_FAST_QUERY_SIZE;
+
     public QueryEngineSettings() {
     }
     
@@ -96,7 +100,18 @@ public class QueryEngineSettings impleme
     public void setFailTraversal(boolean failTraversal) {
         this.failTraversal = failTraversal;
     }
-    
+
+    @Override
+    public boolean isFastQuerySize() {
+        return fastQuerySize;
+    }
+
+    @Override
+    public void setFastQuerySize(boolean fastQuerySize) {
+        this.fastQuerySize = fastQuerySize;
+        System.setProperty(OAK_FAST_QUERY_SIZE, String.valueOf(fastQuerySize));
+    }
+
     public void setFullTextComparisonWithoutIndex(boolean 
fullTextComparisonWithoutIndex) {
         this.fullTextComparisonWithoutIndex = fullTextComparisonWithoutIndex;
     }
@@ -117,6 +132,7 @@ public class QueryEngineSettings impleme
                 ", failTraversal=" + failTraversal +
                 ", fullTextComparisonWithoutIndex=" + 
fullTextComparisonWithoutIndex +
                 ", sql2Optimisation=" + sql2Optimisation +
+                ", fastQuerySize=" + fastQuerySize +
                 '}';
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsMBeanImpl.java?rev=1767852&r1=1767851&r2=1767852&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsMBeanImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsMBeanImpl.java
 Thu Nov  3 10:13:12 2016
@@ -79,7 +79,17 @@ public class QueryEngineSettingsMBeanImp
     public void setFailTraversal(boolean failQueriesWithoutIndex) {
         settings.setFailTraversal(failQueriesWithoutIndex);
     }
-    
+
+    @Override
+    public boolean isFastQuerySize() {
+        return settings.isFastQuerySize();
+    }
+
+    @Override
+    public void setFastQuerySize(boolean fastQuerySize) {
+        settings.setFastQuerySize(fastQuerySize);
+    }
+
     public void setFullTextComparisonWithoutIndex(boolean 
fullTextComparisonWithoutIndex) {
         
settings.setFullTextComparisonWithoutIndex(fullTextComparisonWithoutIndex);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java?rev=1767852&r1=1767851&r2=1767852&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java
 Thu Nov  3 10:13:12 2016
@@ -62,6 +62,14 @@ public class QueryEngineSettingsService
     )
     static final String QUERY_FAIL_TRAVERSAL = "queryFailTraversal";
 
+    @Property(
+            boolValue = false,
+            label = "Fast result size",
+            description = "Whether the query result size should return an 
estimation (or -1 if disabled) " +
+                    "for large queries"
+    )
+    static final String QUERY_FAST_QUERY_SIZE = "fastQuerySize";
+
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     @Reference
@@ -93,6 +101,10 @@ public class QueryEngineSettingsService
             logMsg(QUERY_FAIL_TRAVERSAL, 
QueryEngineSettings.OAK_QUERY_FAIL_TRAVERSAL);
         }
 
+        boolean fastQuerySizeSysProp = 
QueryEngineSettings.DEFAULT_FAST_QUERY_SIZE;
+        boolean fastQuerySizeFromConfig = 
PropertiesUtil.toBoolean(config.get(QUERY_FAST_QUERY_SIZE), false);
+        queryEngineSettings.setFastQuerySize(fastQuerySizeFromConfig || 
fastQuerySizeSysProp);
+
         log.info("Initialize QueryEngine settings {}", queryEngineSettings);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsServiceTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsServiceTest.java?rev=1767852&r1=1767851&r2=1767852&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsServiceTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsServiceTest.java
 Thu Nov  3 10:13:12 2016
@@ -73,11 +73,13 @@ public class QueryEngineSettingsServiceT
         config.put(QueryEngineSettingsService.QUERY_LIMIT_READS, 100);
         config.put(QueryEngineSettingsService.QUERY_LIMIT_IN_MEMORY, 142);
         config.put(QueryEngineSettingsService.QUERY_FAIL_TRAVERSAL, true);
+        config.put(QueryEngineSettingsService.QUERY_FAST_QUERY_SIZE, true);
 
         context.registerInjectActivateService(settingsService, config);
         assertEquals(100, settings.getLimitReads());
         assertEquals(142, settings.getLimitInMemory());
         assertTrue(settings.getFailTraversal());
+        assertTrue(settings.isFastQuerySize());
     }
 
     @Test


Reply via email to