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