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() {
