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/20 11:36:46 UTC

svn commit: r1640715 - in /jackrabbit/oak/trunk/oak-lucene/src: main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ test/java/org/apache/jackrabbit/oak/plugins/index/lucene/

Author: chetanm
Date: Thu Nov 20 10:36:45 2014
New Revision: 1640715

URL: http://svn.apache.org/r1640715
Log:
OAK-2272 - Compatibility support for pre index rule configuration

Added support for auto upgrading the index definition to newer format

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
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.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=1640715&r1=1640714&r2=1640715&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 Thu Nov 20 10:36:45 2014
@@ -263,6 +263,10 @@ class IndexDefinition {
         return version;
     }
 
+    public boolean isOfOldFormat(){
+        return !hasIndexingRules(definition);
+    }
+
     @Override
     public String toString() {
         return "IndexDefinition : " + indexName;
@@ -689,20 +693,22 @@ class IndexDefinition {
 
     //~---------------------------------------------< compatibility >
 
-    public static void updateDefinition(NodeBuilder indexDefn){
-        //TODO Remove existing config once transformed config is persisted
+    public static NodeBuilder updateDefinition(NodeBuilder indexDefn){
         NodeState defn = indexDefn.getBaseState();
         if (!hasIndexingRules(defn)){
             NodeState rulesState = createIndexRules(defn).getNodeState();
             indexDefn.setChildNode(LuceneIndexConstants.INDEX_RULES, rulesState);
             indexDefn.setProperty(INDEX_VERSION, determineIndexFormatVersion(defn).getVersion());
 
-            //indexDefn.removeProperty(DECLARING_NODE_TYPES);
-            //indexDefn.removeProperty(INCLUDE_PROPERTY_NAMES);
-            //indexDefn.removeProperty(EXCLUDE_PROPERTY_NAMES);
-            //indexDefn.removeProperty(ORDERED_PROP_NAMES);
+            indexDefn.removeProperty(DECLARING_NODE_TYPES);
+            indexDefn.removeProperty(INCLUDE_PROPERTY_NAMES);
+            indexDefn.removeProperty(EXCLUDE_PROPERTY_NAMES);
+            indexDefn.removeProperty(ORDERED_PROP_NAMES);
+            indexDefn.removeProperty(FULL_TEXT_ENABLED);
+            indexDefn.child(PROP_NODE).remove();
             log.info("Updated index definition for {}", determineIndexName(defn, null));
         }
+        return indexDefn;
     }
 
     /**

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=1640715&r1=1640714&r2=1640715&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 Thu Nov 20 10:36:45 2014
@@ -110,6 +110,10 @@ public class LuceneIndexEditorContext {
         this.config = getIndexWriterConfig(analyzer, this.definition);
         this.indexedNodes = 0;
         this.updateCallback = updateCallback;
+
+        if (this.definition.isOfOldFormat()){
+            IndexDefinition.updateDefinition(definition);
+        }
     }
 
     Parser getParser() {

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java?rev=1640715&r1=1640714&r2=1640715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java Thu Nov 20 10:36:45 2014
@@ -366,6 +366,22 @@ public class IndexDefinitionTest {
         assertEquals(IndexFormatVersion.getCurrent(), defn.getVersion());
     }
 
+    @Test
+    public void formatUpdate() throws Exception{
+        NodeBuilder defnb = newLuceneIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
+                "lucene", of(TYPENAME_STRING), of("foo"), "async");
+        IndexDefinition defn = new IndexDefinition(root, defnb.getNodeState());
+        assertTrue(defn.isOfOldFormat());
+
+        NodeBuilder updated = IndexDefinition.updateDefinition(defnb.getNodeState().builder());
+        IndexDefinition defn2 = new IndexDefinition(root, updated.getNodeState());
+
+        assertFalse(defn2.isOfOldFormat());
+        IndexingRule rule = defn2.getApplicableIndexingRule(newTree(newNode("nt:base")));
+        assertNotNull(rule);
+        assertFalse(rule.getConfig("foo").index);
+    }
+
 
     private static IndexingRule getRule(IndexDefinition defn, String typeName){
         return defn.getApplicableIndexingRule(newTree(newNode(typeName)));

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java?rev=1640715&r1=1640714&r2=1640715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java Thu Nov 20 10:36:45 2014
@@ -58,6 +58,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
 import static org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent.INITIAL_CONTENT;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
@@ -280,6 +281,19 @@ public class LuceneIndexEditorTest {
 
     }
 
+    @Test
+    public void autoFormatUpdate() throws Exception{
+        NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);
+        NodeBuilder nb = newLuceneIndexDefinition(index, "lucene",
+                of(TYPENAME_STRING));
+
+        //1. Trigger a index so that next index step does not see it as a fresh index
+        NodeState indexed = HOOK.processCommit(EMPTY_NODE, builder.getNodeState(), CommitInfo.EMPTY);
+
+        IndexDefinition defn = new IndexDefinition(root, indexed.getChildNode(INDEX_DEFINITIONS_NAME).getChildNode("lucene"));
+        assertFalse(defn.isOfOldFormat());
+    }
+
     //@Test
     public void checkLuceneIndexFileUpdates() throws Exception{
         NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1640715&r1=1640714&r2=1640715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java Thu Nov 20 10:36:45 2014
@@ -49,7 +49,6 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.util.ISO8601;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static com.google.common.collect.ImmutableSet.of;
@@ -676,7 +675,6 @@ public class LucenePropertyIndexTest ext
         Tree idx = createIndex("test1", of("propa", "propb", "propc"));
         idx.setProperty(LuceneIndexConstants.FULL_TEXT_ENABLED, true);
         Tree propNode = idx.addChild(PROP_NODE);
-        root.commit();
 
         // property definition for index test1
         Tree propA = propNode.addChild("propa");
@@ -735,7 +733,6 @@ public class LucenePropertyIndexTest ext
         def.setProperty(REINDEX_PROPERTY_NAME, true);
         def.setProperty(LuceneIndexConstants.FULL_TEXT_ENABLED, false);
         def.setProperty(PropertyStates.createProperty(LuceneIndexConstants.INCLUDE_PROPERTY_NAMES, propNames, Type.STRINGS));
-        root.commit();
         return index.getChild(INDEX_DEFINITIONS_NAME).getChild(name);
     }