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 al...@apache.org on 2015/07/01 14:37:25 UTC

svn commit: r1688634 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/ oak-lucene/sr...

Author: alexparvulescu
Date: Wed Jul  1 12:37:24 2015
New Revision: 1688634

URL: http://svn.apache.org/r1688634
Log:
OAK-3011 Add name of lucene-property index to cost debug log


Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregateIndexPlan.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregateIndexPlan.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregateIndexPlan.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregateIndexPlan.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregateIndexPlan.java Wed Jul  1 12:37:24 2015
@@ -202,4 +202,19 @@ public class AggregateIndexPlan implemen
         return null;
     }
 
+    @Override
+    public String getPlanName() {
+        StringBuilder name = new StringBuilder();
+        boolean first = true;
+        for (IndexPlan p : basePlans.values()) {
+            if (!first) {
+                name.append(",");
+            } else {
+                first = false;
+            }
+            name.append(p.getPlanName());
+        }
+        return name.toString();
+    }
+
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java Wed Jul  1 12:37:24 2015
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.0")
+@Version("1.1.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.plugins.index.aggregate;
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java Wed Jul  1 12:37:24 2015
@@ -910,6 +910,7 @@ public class QueryImpl implements Query
         IndexPlan bestPlan = null;
         for (QueryIndex index : indexProvider.getQueryIndexes(rootState)) {
             double cost;
+            String indexName = index.getIndexName();
             IndexPlan indexPlan = null;
             if (index instanceof AdvancedQueryIndex) {
                 AdvancedQueryIndex advIndex = (AdvancedQueryIndex) index;
@@ -957,6 +958,9 @@ public class QueryImpl implements Query
                     double c = p.getCostPerExecution() + entryCount * p.getCostPerEntry();
                     if (c < cost) {
                         cost = c;
+                        if (p.getPlanName() != null) {
+                            indexName += "[" + p.getPlanName() + "]";
+                        }
                         indexPlan = p;
                     }
                 }
@@ -964,10 +968,10 @@ public class QueryImpl implements Query
                 cost = index.getCost(filter, rootState);
             }
             if (LOG.isDebugEnabled()) {
-                logDebug("cost for " + index.getIndexName() + " is " + cost);
+                logDebug("cost for " + indexName + " is " + cost);
             }
             if (cost < 0) {
-                LOG.error("cost below 0 for " + index.getIndexName() + " is " + cost);
+                LOG.error("cost below 0 for " + indexName + " is " + cost);
             }
             if (cost < bestCost) {
                 bestCost = cost;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java Wed Jul  1 12:37:24 2015
@@ -24,6 +24,8 @@ import java.util.Map;
 
 import javax.annotation.CheckForNull;
 
+import aQute.bnd.annotation.ProviderType;
+
 import com.google.common.collect.Maps;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
@@ -194,6 +196,7 @@ public interface QueryIndex {
     /**
      * An index plan.
      */
+    @ProviderType
     public interface IndexPlan extends Cloneable{
 
         /**
@@ -307,7 +310,15 @@ public interface QueryIndex {
          */
         @CheckForNull
         Object getAttribute(String name);
-        
+
+        /**
+         * Get the unique plan name.
+         *
+         * @return the plan name
+         */
+        @CheckForNull
+        String getPlanName();
+
         /**
          * A builder for index plans.
          */
@@ -325,6 +336,7 @@ public interface QueryIndex {
             protected PropertyRestriction propRestriction;
             protected String pathPrefix = "/";
             protected Map<String, Object> attributes = Maps.newHashMap();
+            protected String planName = null;
 
             public Builder setCostPerExecution(double costPerExecution) {
                 this.costPerExecution = costPerExecution;
@@ -386,6 +398,11 @@ public interface QueryIndex {
                return this;
             }
 
+            public Builder setPlanName(String name) {
+                this.planName = name;
+                return this;
+             }
+
             public IndexPlan build() {
                 
                 return new IndexPlan() {
@@ -416,6 +433,7 @@ public interface QueryIndex {
                             Builder.this.pathPrefix;
                     private final Map<String, Object> attributes =
                             Builder.this.attributes;
+                    private final String planName = Builder.this.planName;
 
                     @Override
                     public String toString() {
@@ -523,6 +541,11 @@ public interface QueryIndex {
                     public Object getAttribute(String name) {
                         return attributes.get(name);
                     }
+
+                    @Override
+                    public String getPlanName(){
+                        return planName;
+                    }
                 };
             }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java Wed Jul  1 12:37:24 2015
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("2.0.0")
+@Version("2.1.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.spi.query;
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java?rev=1688634&r1=1688633&r2=1688634&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java Wed Jul  1 12:37:24 2015
@@ -346,7 +346,8 @@ class IndexPlanner {
                 .setPathPrefix(getPathPrefix())
                 .setDelayed(true) //Lucene is always async
                 .setAttribute(LucenePropertyIndex.ATTR_PLAN_RESULT, result)
-                .setEstimatedEntryCount(estimatedEntryCount());
+                .setEstimatedEntryCount(estimatedEntryCount())
+                .setPlanName(indexPath);
     }
 
     private long estimatedEntryCount() {