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 2014/11/27 12:30:00 UTC

svn commit: r1642097 - in /jackrabbit/oak/branches/1.0: ./ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/

Author: chetanm
Date: Thu Nov 27 11:29:59 2014
New Revision: 1642097

URL: http://svn.apache.org/r1642097
Log:
OAK-2279 -  Add testMode support in IndexPlanner

Merging revisions 1640863

Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
    jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
    jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
    jackrabbit/oak/branches/1.0/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LowCostLuceneIndexProvider.java

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1640863

Modified: jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1642097&r1=1642096&r2=1642097&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java (original)
+++ jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java Thu Nov 27 11:29:59 2014
@@ -141,6 +141,8 @@ class IndexDefinition {
 
     private final String indexName;
 
+    private final boolean testMode;
+
     private final IndexFormatVersion version;
 
     public IndexDefinition(NodeState root, NodeState defn) {
@@ -161,6 +163,7 @@ class IndexDefinition {
         this.definition = defn;
         this.indexName = determineIndexName(defn, indexPath);
         this.blobSize = getOptionalValue(defn, BLOB_SIZE, DEFAULT_BLOB_SIZE);
+        this.testMode = getOptionalValue(defn, LuceneIndexConstants.TEST_MODE, false);
 
         NodeState rulesState = defn.getChildNode(LuceneIndexConstants.INDEX_RULES);
         if (!rulesState.exists()){
@@ -179,6 +182,9 @@ class IndexDefinition {
         this.relativePropsMaxLevels = getRelPropertyMaxLevels(relativeProperties);
 
         String functionName = getOptionalValue(defn, LuceneIndexConstants.FUNC_NAME, null);
+        if (fullTextEnabled && functionName == null){
+            functionName = "lucene";
+        }
         this.funcName = functionName != null ? "native*" + functionName : null;
 
         this.codec = createCodec();
@@ -267,6 +273,10 @@ class IndexDefinition {
         return !hasIndexingRules(definition);
     }
 
+    public boolean isTestMode() {
+        return testMode;
+    }
+
     @Override
     public String toString() {
         return "IndexDefinition : " + indexName;

Modified: jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java?rev=1642097&r1=1642096&r2=1642097&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java (original)
+++ jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java Thu Nov 27 11:29:59 2014
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.oak.query.f
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.lucene.index.IndexReader;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static com.google.common.collect.Maps.newHashMap;
@@ -59,6 +60,10 @@ class IndexPlanner {
 
     IndexPlan getPlan() {
         IndexPlan.Builder builder = getPlanBuilder();
+
+        checkArgument(defn.isTestMode() && builder != null, "No plan found for filter [%s] " +
+                "while using definition [%s] and testMode is found to be enabled", filter, defn);
+
         return builder != null ? builder.build() : null;
     }
 
@@ -135,6 +140,11 @@ class IndexPlanner {
             if (!sortOrder.isEmpty()) {
                 plan.setSortOrder(sortOrder);
             }
+
+            if (costPerEntryFactor == 0){
+                costPerEntryFactor = 1;
+            }
+
             return plan.setCostPerEntry(1.0 / costPerEntryFactor);
         }
 

Modified: jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java?rev=1642097&r1=1642096&r2=1642097&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java (original)
+++ jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java Thu Nov 27 11:29:59 2014
@@ -134,4 +134,10 @@ public interface LuceneIndexConstants {
      * used in compat mode to specific version
      */
     String COMPAT_MODE = "compatVersion";
+
+    /**
+     * Boolean property to indicate that LuceneIndex is being used in testMode
+     * and it should participate in every test
+     */
+    String TEST_MODE = "testMode";
 }

Modified: jackrabbit/oak/branches/1.0/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LowCostLuceneIndexProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LowCostLuceneIndexProvider.java?rev=1642097&r1=1642096&r2=1642097&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LowCostLuceneIndexProvider.java (original)
+++ jackrabbit/oak/branches/1.0/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LowCostLuceneIndexProvider.java Thu Nov 27 11:29:59 2014
@@ -45,6 +45,9 @@ public class LowCostLuceneIndexProvider 
         @Override
         public List<IndexPlan> getPlans(Filter filter, List<OrderEntry> sortOrder, NodeState rootState) {
             String indexPath = new LuceneIndexLookup(rootState).getOldFullTextIndexPath(filter, tracker);
+            if (indexPath == null){
+                return Collections.emptyList();
+            }
             return Collections.singletonList(planBuilder(filter)
                     .setCostPerExecution(1e-3)
                     .setAttribute(ATTR_INDEX_PATH, indexPath)