Author: chetanm Date: Tue Dec 13 05:24:04 2016 New Revision: 1773920 URL: http://svn.apache.org/viewvc?rev=1773920&view=rev Log: OAK-4400 - Correlate index with the index definition used to build it
Modify the IndexDefinition.Builder to use the stored index definition when not used in reindexing mode Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1773920&r1=1773919&r2=1773920&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java (original) +++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java Tue Dec 13 05:24:04 2016 @@ -273,6 +273,7 @@ public final class IndexDefinition imple private final String indexPath; private IndexFormatVersion version; private String uid; + private boolean reindexMode; public Builder(NodeState root, NodeState defn, String indexPath) { this.root = checkNotNull(root); @@ -290,6 +291,11 @@ public final class IndexDefinition imple return this; } + public Builder reindex(){ + this.reindexMode = true; + return this; + } + public IndexDefinition build(){ if (version == null){ version = determineIndexFormatVersion(defn); @@ -300,7 +306,12 @@ public final class IndexDefinition imple uid = DEFAULT_UID; } } - return new IndexDefinition(root, defn, version, uid, checkNotNull(indexPath)); + + NodeState indexDefnStateToUse = defn; + if (!reindexMode){ + indexDefnStateToUse = getIndexDefinitionState(defn); + } + return new IndexDefinition(root, indexDefnStateToUse, version, uid, indexPath); } } Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java?rev=1773920&r1=1773919&r2=1773920&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java (original) +++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java Tue Dec 13 05:24:04 2016 @@ -50,6 +50,8 @@ import org.slf4j.LoggerFactory; import static com.google.common.base.Preconditions.checkNotNull; import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount; +import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.INDEX_DEFINITION_NODE; +import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PROP_REFRESH_DEFN; public class LuceneIndexEditorContext { @@ -195,7 +197,7 @@ public class LuceneIndexEditorContext { //For case where index definition is rewritten there we get fresh state NodeState defnState = indexDefnRewritten ? definitionBuilder.getNodeState() : definitionBuilder.getBaseState(); if (!IndexDefinition.isDisableStoredIndexDefinition()) { - definitionBuilder.setChildNode(IndexDefinition.INDEX_DEFINITION_NODE, NodeStateCloner.cloneVisibleState(defnState)); + definitionBuilder.setChildNode(INDEX_DEFINITION_NODE, NodeStateCloner.cloneVisibleState(defnState)); } String uid = configureUniqueId(definitionBuilder); @@ -204,6 +206,7 @@ public class LuceneIndexEditorContext { .newBuilder(root, defnState, indexingContext.getIndexPath()) .version(version) .uid(uid) + .reindex() .build(); } @@ -283,16 +286,16 @@ public class LuceneIndexEditorContext { indexingContext, boolean asyncIndexing) { NodeState defnState = definition.getBaseState(); if (asyncIndexing && !IndexDefinition.isDisableStoredIndexDefinition()){ - if (definition.getBoolean(LuceneIndexConstants.PROP_REFRESH_DEFN)){ - definition.removeProperty(LuceneIndexConstants.PROP_REFRESH_DEFN); + if (definition.getBoolean(PROP_REFRESH_DEFN)){ + definition.removeProperty(PROP_REFRESH_DEFN); NodeState clonedState = NodeStateCloner.cloneVisibleState(defnState); - definition.setChildNode(IndexDefinition.INDEX_DEFINITION_NODE, clonedState); + definition.setChildNode(INDEX_DEFINITION_NODE, clonedState); log.info("Refreshed the index definition for [{}]", indexingContext.getIndexPath()); if (log.isDebugEnabled()){ log.debug("Updated index definition is {}", NodeStateUtils.toString(clonedState)); } - } else if (!definition.hasChildNode(IndexDefinition.INDEX_DEFINITION_NODE)){ - definition.setChildNode(IndexDefinition.INDEX_DEFINITION_NODE, NodeStateCloner.cloneVisibleState(defnState)); + } else if (!definition.hasChildNode(INDEX_DEFINITION_NODE)){ + definition.setChildNode(INDEX_DEFINITION_NODE, NodeStateCloner.cloneVisibleState(defnState)); log.info("Stored the cloned index definition for [{}]. Changes in index definition would now only be " + "effective post reindexing", indexingContext.getIndexPath()); }