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