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