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/02 07:28:02 UTC
svn commit: r1754835 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java
Author: chetanm
Date: Tue Aug 2 07:28:02 2016
New Revision: 1754835
URL: http://svn.apache.org/viewvc?rev=1754835&view=rev
Log:
OAK-4628 - Using non default dir name causes index directory to be deleted
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java?rev=1754835&r1=1754834&r2=1754835&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java Tue Aug 2 07:28:02 2016
@@ -173,8 +173,7 @@ public class IndexCopier implements Copy
Directory result = FSDirectory.open(indexDir);
String newPath = indexDir.getAbsolutePath();
- //TODO Account for type of path also
- String oldPath = indexPathVersionMapping.put(indexPath, newPath);
+ String oldPath = indexPathVersionMapping.put(createIndexPathKey(indexPath, dirName), newPath);
if (!newPath.equals(oldPath) && oldPath != null) {
result = new DeleteOldDirOnClose(result, new File(oldPath));
}
@@ -257,6 +256,13 @@ public class IndexCopier implements Copy
}
/**
+ * Create a unique key based on indexPath and dirName used under that path
+ */
+ private static String createIndexPathKey(String indexPath, String dirName){
+ return indexPath.concat(dirName);
+ }
+
+ /**
* Directory implementation which lazily copies the index files from a
* remote directory in background.
*/
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java?rev=1754835&r1=1754834&r2=1754835&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopierTest.java Tue Aug 2 07:28:02 2016
@@ -210,6 +210,26 @@ public class IndexCopierTest {
assertEquals(1, td.size());
}
+
+ @Test
+ public void multiDirNames() throws Exception{
+ IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
+ IndexCopier c1 = new IndexCopier(sameThreadExecutor(), getWorkDir());
+
+ Directory remote = new CloseSafeDir();
+ byte[] t1 = writeFile(remote, "t1");
+ byte[] t2 = writeFile(remote , "t2");
+
+ Directory w1 = c1.wrapForRead(indexPath, defn, remote, ":data");
+
+ readAndAssert(w1, "t1", t1);
+
+ Directory w2 = c1.wrapForRead(indexPath, defn, remote, ":private-data");
+ w2.close();
+
+ readAndAssert(w1, "t1", t1);
+ }
+
@Test
public void deleteOldPostReindex() throws Exception{
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());