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/08/17 10:28:33 UTC

svn commit: r1756609 - in /jackrabbit/oak/branches/1.4: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugi...

Author: chetanm
Date: Wed Aug 17 10:28:33 2016
New Revision: 1756609

URL: http://svn.apache.org/viewvc?rev=1756609&view=rev
Log:
OAK-4152 - Expose the index path to IndexEditor
OAK-4347 - Use the indexPath from hidden property instead of taking this as input as part of index config
OAK-4431 - Index path property should be considered optional for copy on read logic

Merging 1738207,1742363,1747198,1747200

Modified:
    jackrabbit/oak/branches/1.4/   (props changed)
    jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
    jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
    jackrabbit/oak/branches/1.4/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
    jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java

Propchange: jackrabbit/oak/branches/1.4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 10:28:33 2016
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1733615,1733875,1733913,1733929,1734230,1734254,1734279,1734941,1735052,1735267,1735405,1735484,1735549,1735564,1735588,1735622,1735638,1735919,1735983,1736176,1737309-1737310,1737334,1737349,1737998,1738004,1738775,1738795,1738833,1738950,1738957,1738963,1739894,1740116,1740625-1740626,1740971,1741032,1741339,1741343,1742520,1742888,1742916,1743097,1743172,1743343,1744265,1744959,1745038,1745197,1745368,1746086,1746117,1746342,1746345,1746696,1746981,1747341-1747342,1747492,1747512,1748505,1748553,1748722,1748870,1749275,1749350,1749464,1749475,1749645,1749662,1749815,1749872,1749875,1749899,1750052,1750076-1750077,1750287,1750457,1750462,1750465,1750495,1750626,1750809,1750886,1751410,1751445-1751446,1751478,1751755,1751871,1752198,1752202,1752273-1752274,1752438,1752447,1752508,1752616,1752659,1752672,1753262,1753331-1753332,1753355,1753444,1754117,1754239,1755157,1756520,1756580
+/jackrabbit/oak/trunk:1733615,1733875,1733913,1733929,1734230,1734254,1734279,1734941,1735052,1735267,1735405,1735484,1735549,1735564,1735588,1735622,1735638,1735919,1735983,1736176,1737309-1737310,1737334,1737349,1737998,1738004,1738207,1738775,1738795,1738833,1738950,1738957,1738963,1739894,1740116,1740625-1740626,1740971,1741032,1741339,1741343,1742363,1742520,1742888,1742916,1743097,1743172,1743343,1744265,1744959,1745038,1745197,1745368,1746086,1746117,1746342,1746345,1746696,1746981,1747198,1747200,1747341-1747342,1747492,1747512,1748505,1748553,1748722,1748870,1749275,1749350,1749464,1749475,1749645,1749662,1749815,1749872,1749875,1749899,1750052,1750076-1750077,1750287,1750457,1750462,1750465,1750495,1750626,1750809,1750886,1751410,1751445-1751446,1751478,1751755,1751871,1752198,1752202,1752273-1752274,1752438,1752447,1752508,1752616,1752659,1752672,1753262,1753331-1753332,1753355,1753444,1754117,1754239,1755157,1756520,1756580
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java (original)
+++ jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java Wed Aug 17 10:28:33 2016
@@ -67,4 +67,10 @@ public interface IndexConstants {
      * queries. Defaults to ['/'].
      */
     String QUERY_PATHS = "queryPaths";
+
+    /**
+     * Hidden property which stores the indexPath which can be used by
+     * IndexEditors
+     */
+    String INDEX_PATH = ":indexPath";
 }

Modified: jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java (original)
+++ jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java Wed Aug 17 10:28:33 2016
@@ -25,6 +25,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_REINDEX_VALUE;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_ASYNC_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_COUNT;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
@@ -195,6 +196,7 @@ public class IndexUpdate implements Edit
                     // probably not an index def
                     continue;
                 }
+                manageIndexPath(definition, name);
                 boolean shouldReindex = shouldReindex(definition,
                         before, name);
                 String indexPath = getIndexPath(getPath(), name);
@@ -227,6 +229,13 @@ public class IndexUpdate implements Edit
         }
     }
 
+    private void manageIndexPath(NodeBuilder definition, String name) {
+        String path = definition.getString(INDEX_PATH);
+        if (path == null){
+            definition.setProperty(INDEX_PATH, PathUtils.concat(getPath(), INDEX_DEFINITIONS_NAME, name));
+        }
+    }
+
     private void incrementReIndexCount(NodeBuilder definition) {
         long count = 0;
         if(definition.hasProperty(REINDEX_COUNT)){

Modified: jackrabbit/oak/branches/1.4/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java Wed Aug 17 10:28:33 2016
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.JcrC
 import static org.apache.jackrabbit.JcrConstants.NT_FILE;
 import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefinition;
 import static org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_EXCLUDED_PATHS;
 import static org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_INCLUDED_PATHS;
@@ -66,6 +67,7 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -733,6 +735,20 @@ public class PropertyIndexTest {
         assertTrue(Double.POSITIVE_INFINITY == plan.getCost());
     }
 
+    @Test
+    public void indexPath() throws Exception{
+        NodeState root = INITIAL_CONTENT;
+
+        // Add index definition
+        NodeBuilder builder = root.builder();
+        createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo",
+                true, false, ImmutableSet.of("foo"), null);
+        NodeState after = builder.getNodeState();
+        NodeState indexed = HOOK.processCommit(root, after, CommitInfo.EMPTY);
+        NodeState idxDefn = NodeStateUtils.getNode(indexed, "/oak:index/foo");
+        assertEquals("/oak:index/foo", idxDefn.getString(INDEX_PATH));
+    }
+
     private int getResultSize(NodeState indexed, String name, String value){
         FilterImpl f = createFilter(indexed, NT_BASE);
 

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java Wed Aug 17 10:28:33 2016
@@ -137,13 +137,13 @@ public class IndexCopier implements Copy
     public Directory wrapForRead(String indexPath, IndexDefinition definition,
             Directory remote) throws IOException {
         Directory local = createLocalDirForIndexReader(indexPath, definition);
-        return new CopyOnReadDirectory(remote, local, prefetchEnabled, indexPath, getSharedWorkingSet(definition));
+        return new CopyOnReadDirectory(remote, local, prefetchEnabled, indexPath, getSharedWorkingSet(indexPath));
     }
 
     public Directory wrapForWrite(IndexDefinition definition, Directory remote, boolean reindexMode) throws IOException {
         Directory local = createLocalDirForIndexWriter(definition);
         return new CopyOnWriteDirectory(remote, local, reindexMode,
-                getIndexPathForLogging(definition), getSharedWorkingSet(definition));
+                getIndexPathForLogging(definition), getSharedWorkingSet(definition.getIndexPathFromConfig()));
     }
 
     @Override
@@ -161,29 +161,15 @@ public class IndexCopier implements Copy
 
     protected Directory createLocalDirForIndexWriter(IndexDefinition definition) throws IOException {
         String indexPath = definition.getIndexPathFromConfig();
-        File indexWriterDir;
-        if (indexPath == null){
-            //If indexPath is not known create a unique directory for work
-            indexWriterDir = new File(indexWorkDir, String.valueOf(UNIQUE_COUNTER.incrementAndGet()));
-        } else {
-            File indexDir = getIndexDir(indexPath);
-            String newVersion = String.valueOf(definition.getReindexCount());
-            indexWriterDir = getVersionedDir(indexPath, indexDir, newVersion);
-        }
+        File indexDir = getIndexDir(indexPath);
+        String newVersion = String.valueOf(definition.getReindexCount());
+        File indexWriterDir = getVersionedDir(indexPath, indexDir, newVersion);
 
         //By design indexing in Oak is single threaded so Lucene locking
         //can be disabled
         Directory dir = FSDirectory.open(indexWriterDir, NoLockFactory.getNoLockFactory());
 
         log.debug("IndexWriter would use {}", indexWriterDir);
-
-        if (indexPath == null) {
-            dir = new DeleteOldDirOnClose(dir, indexWriterDir);
-            log.debug("IndexPath [{}] not configured in index definition {}. Writer would create index " +
-                    "files in temporary dir {} which would be deleted upon close. For better performance do " +
-                    "configure the 'indexPath' as part of your index definition", LuceneIndexConstants.INDEX_PATH,
-                    definition, indexWriterDir);
-        }
         return dir;
     }
 
@@ -252,15 +238,7 @@ public class IndexCopier implements Copy
      * @param defn index definition for which the directory is being created
      * @return a set to maintain the state of new files being created by the COW Directory
      */
-    private Set<String> getSharedWorkingSet(IndexDefinition defn){
-        String indexPath = defn.getIndexPathFromConfig();
-
-        if (indexPath == null){
-            //With indexPath null the working directory would not
-            //be shared between COR and COW. So just return a new set
-            return new HashSet<String>();
-        }
-
+    private Set<String> getSharedWorkingSet(String indexPath){
         Set<String> sharedSet;
         synchronized (sharedWorkingSetMap){
             sharedSet = sharedWorkingSetMap.get(indexPath);

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java Wed Aug 17 10:28:33 2016
@@ -68,6 +68,7 @@ import org.apache.lucene.codecs.Codec;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static com.google.common.collect.Maps.newHashMap;
@@ -78,6 +79,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.DECLARING_NODE_TYPES;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ENTRY_COUNT_PROPERTY_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_COUNT;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.*;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.PropertyDefinition.DEFAULT_BOOST;
@@ -216,23 +218,23 @@ class IndexDefinition implements Aggrega
 
     private final boolean spellcheckEnabled;
 
-    public IndexDefinition(NodeState root, NodeState defn) {
-        this(root, defn, null);
-    }
+    private final String indexPath;
 
     public IndexDefinition(NodeState root, NodeBuilder defn) {
-        this(root, defn.getBaseState(), defn, null);
+        this(root, defn.getBaseState(), defn);
     }
 
-    public IndexDefinition(NodeState root, NodeState defn, @Nullable String indexPath) {
-        this(root, defn, null, indexPath);
+    public IndexDefinition(NodeState root, NodeState defn) {
+        this(root, defn, null);
     }
 
-    public IndexDefinition(NodeState root, NodeState defn, @Nullable NodeBuilder defnb, @Nullable String indexPath) {
+    public IndexDefinition(NodeState root, NodeState defn, @Nullable NodeBuilder defnb) {
         this.root = root;
         this.version = determineIndexFormatVersion(defn, defnb);
         this.definition = defn;
-        this.indexName = determineIndexName(defn, indexPath);
+        this.indexPath = determineIndexPath(defn, defnb);
+        this.indexName = indexPath;
+
         this.blobSize = getOptionalValue(defn, BLOB_SIZE, DEFAULT_BLOB_SIZE);
         this.activeDelete = getOptionalValue(defn, ACTIVE_DELETE, DEFAULT_ACTIVE_DELETE);
         this.testMode = getOptionalValue(defn, LuceneIndexConstants.TEST_MODE, false);
@@ -654,9 +656,8 @@ class IndexDefinition implements Aggrega
         return spellcheckEnabled;
     }
 
-    @CheckForNull
     public String getIndexPathFromConfig() {
-        return definition.getString(LuceneIndexConstants.INDEX_PATH);
+        return checkNotNull(indexPath, "Index path property [%s] not found", IndexConstants.INDEX_PATH);
     }
 
     private boolean evaluateSuggestAnalyzed(NodeState defn, boolean defaultValue) {
@@ -1143,7 +1144,7 @@ class IndexDefinition implements Aggrega
             indexDefn.removeProperty(ORDERED_PROP_NAMES);
             indexDefn.removeProperty(FULL_TEXT_ENABLED);
             indexDefn.child(PROP_NODE).remove();
-            log.info("Updated index definition for {}", determineIndexName(defn, null));
+            log.info("Updated index definition for {}", indexDefn.getString(INDEX_PATH));
         }
         return indexDefn;
     }
@@ -1306,22 +1307,12 @@ class IndexDefinition implements Aggrega
         return codec;
     }
 
-    private static String determineIndexName(NodeState defn, String indexPath) {
-        if (indexPath == null){
-            indexPath = defn.getString(LuceneIndexConstants.INDEX_PATH);
-        }
-        String indexName = defn.getString(PROP_NAME);
-        if (indexName ==  null){
-            if (indexPath != null) {
-                return indexPath;
-            }
-            return "<No 'name' property defined>";
-        }
-
-        if (indexPath != null){
-            return indexName + "(" + indexPath + ")";
+    private static String determineIndexPath(NodeState defn, @Nullable  NodeBuilder defnb) {
+        String indexPath = defn.getString(IndexConstants.INDEX_PATH);
+        if (indexPath == null && defnb != null){
+            indexPath = defnb.getString(IndexConstants.INDEX_PATH);
         }
-        return indexName;
+        return indexPath;
     }
 
     private static Set<String> getMultiProperty(NodeState definition, String propName){

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java Wed Aug 17 10:28:33 2016
@@ -45,7 +45,7 @@ class IndexNode {
     static IndexNode open(String indexPath, NodeState root, NodeState defnNodeState, @Nullable IndexCopier cloner)
             throws IOException {
         Directory directory = null;
-        IndexDefinition definition = new IndexDefinition(root, defnNodeState, indexPath);
+        IndexDefinition definition = new IndexDefinition(root, defnNodeState);
         NodeState data = defnNodeState.getChildNode(INDEX_DATA_CHILD_NAME);
         if (data.exists()) {
             directory = new OakDirectory(new ReadOnlyBuilder(defnNodeState), definition, true);

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java Wed Aug 17 10:28:33 2016
@@ -294,7 +294,10 @@ public interface LuceneIndexConstants {
      * definition is defined is not known to IndexEditor. To make use of CopyOnWrite
      * feature its required to know the indexPath to optimize the lookup and read of
      * existing index files
+     *
+     * @deprecated With OAK-4152 no need to explicitly define indexPath property
      */
+    @Deprecated
     String INDEX_PATH = "indexPath";
 
     /**

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java Wed Aug 17 10:28:33 2016
@@ -52,6 +52,7 @@ import com.google.common.util.concurrent
 import com.google.common.util.concurrent.MoreExecutors;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.commons.IOUtils;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.lucene.store.Directory;
@@ -60,6 +61,7 @@ import org.apache.lucene.store.IOContext
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.RAMDirectory;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -90,6 +92,11 @@ public class IndexCopierTest {
 
     private NodeBuilder builder = root.builder();
 
+    @Before
+    public void setUp(){
+        builder.setProperty(IndexConstants.INDEX_PATH, "/oak:index/test");
+    }
+
     @Test
     public void basicTest() throws Exception{
         Directory baseDir = new RAMDirectory();
@@ -563,7 +570,7 @@ public class IndexCopierTest {
 
         IndexCopier copier = new IndexCopier(sameThreadExecutor(), getWorkDir());
 
-        builder.setProperty(LuceneIndexConstants.INDEX_PATH, "foo");
+        builder.setProperty(IndexConstants.INDEX_PATH, "foo");
         IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
         Directory dir = copier.wrapForWrite(defn, remote, false);
 
@@ -937,7 +944,7 @@ public class IndexCopierTest {
 
         Directory baseDir = new CloseSafeDir();
         String indexPath = "/foo";
-        builder.setProperty(LuceneIndexConstants.INDEX_PATH, indexPath);
+        builder.setProperty(IndexConstants.INDEX_PATH, indexPath);
         IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
         IndexCopier copier = new RAMIndexCopier(baseDir, executor, getWorkDir(), true);
 

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java Wed Aug 17 10:28:33 2016
@@ -349,7 +349,7 @@ public class LuceneIndexEditorTest {
 
         NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);
         NodeBuilder nb = newLuceneIndexDefinitionV2(index, "lucene", of(TYPENAME_STRING));
-        nb.setProperty(LuceneIndexConstants.INDEX_PATH, "foo");
+        nb.setProperty(IndexConstants.INDEX_PATH, "foo");
         IndexUtils.createIndexDefinition(index, "failingIndex", false, false, of("foo"), null);
 
 

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java Wed Aug 17 10:28:33 2016
@@ -120,6 +120,7 @@ import org.apache.lucene.queries.CustomS
 import org.apache.lucene.search.Query;
 import org.junit.After;
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -879,6 +880,44 @@ public class LuceneIndexTest {
         }
     }
 
+    @Test
+    public void indexNameIsIndexPath() throws Exception {
+        NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);
+        newLucenePropertyIndexDefinition(index, "lucene", ImmutableSet.of("foo"), null);
+
+        NodeState before = builder.getNodeState();
+        builder.setProperty("foo", "bar");
+        NodeState after = builder.getNodeState();
+
+        NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
+
+        IndexDefinition defn = new IndexDefinition(root, indexed.getChildNode("oak:index").getChildNode("lucene"));
+        assertEquals("/oak:index/lucene", defn.getIndexName());
+        assertEquals("/oak:index/lucene", defn.getIndexPathFromConfig());
+    }
+
+
+    @Test
+    public void luceneWithCopyOnReadDir_Compat() throws Exception{
+        NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);
+        newLucenePropertyIndexDefinition(index, "lucene", ImmutableSet.of("foo", "foo2"), null);
+
+        NodeState before = builder.getNodeState();
+        builder.setProperty("foo", "bar");
+        NodeState after = builder.getNodeState();
+
+        NodeState indexed = HOOK.processCommit(before, after,CommitInfo.EMPTY);
+
+        builder = indexed.builder();
+        builder.getChildNode("oak:index").getChildNode("lucene").removeProperty(IndexConstants.INDEX_PATH);
+        indexed = builder.getNodeState();
+
+        File indexRootDir = new File(getIndexDir());
+        IndexTracker tracker = new IndexTracker(new IndexCopier(sameThreadExecutor(), indexRootDir));
+        tracker.update(indexed);
+
+        assertQuery(tracker, indexed, "foo", "bar");
+    }
 
     @After
     public void cleanUp(){

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java Wed Aug 17 10:28:33 2016
@@ -2000,33 +2000,6 @@ public class LucenePropertyIndexTest ext
         assertQuery(propabQuery, asList("/test/a"));
     }
 
-    //OAK-4024
-    @Test
-    public void reindexWithCOWWithIndexPath() throws Exception {
-        Tree idx = createIndex("test1", of("propa", "propb"));
-        idx.setProperty(LuceneIndexConstants.INDEX_PATH, "/oak:index/test1");
-        Tree props = TestUtil.newRulePropTree(idx, "mix:title");
-        Tree prop1 = props.addChild(TestUtil.unique("prop"));
-        prop1.setProperty(LuceneIndexConstants.PROP_NAME, "jcr:title");
-        prop1.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true);
-        root.commit();
-
-        //force CoR
-        executeQuery("SELECT * FROM [mix:title]", SQL2);
-
-        assertNotNull(corDir);
-        String localPathBeforeReindex = corDir;
-
-        //CoW with re-indexing
-        idx.setProperty("reindex", true);
-        root.commit();
-
-        assertNotNull(cowDir);
-        String localPathAfterReindex = cowDir;
-
-        assertNotEquals("CoW should write to different dir on reindexing", localPathBeforeReindex, localPathAfterReindex);
-    }
-
     @Test
     public void reindexWithCOWWithoutIndexPath() throws Exception {
         Tree idx = createIndex("test1", of("propa", "propb"));

Modified: jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java?rev=1756609&r1=1756608&r2=1756609&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java Wed Aug 17 10:28:33 2016
@@ -32,6 +32,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.NullInputStream;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
 import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
@@ -336,7 +337,7 @@ public class OakDirectoryTest {
     @Test
     public void dirNameInExceptionMessage() throws Exception{
         String indexPath = "/foo/bar";
-        builder.setProperty(LuceneIndexConstants.INDEX_PATH, indexPath);
+        builder.setProperty(IndexConstants.INDEX_PATH, indexPath);
         Directory dir = createDir(builder, false);
 
         try {
@@ -382,7 +383,7 @@ public class OakDirectoryTest {
         int blobSize = minFileSize + 1000;
 
         builder = nodeStore.getRoot().builder();
-        builder.setProperty(LuceneIndexConstants.INDEX_PATH, indexPath);
+        builder.setProperty(IndexConstants.INDEX_PATH, indexPath);
         builder.setProperty(LuceneIndexConstants.BLOB_SIZE, blobSize);
         Directory dir = createDir(builder, false);