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 2016/12/13 05:24:05 UTC

svn commit: r1773920 - in /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene: IndexDefinition.java LuceneIndexEditorContext.java

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());
             }