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