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 2015/10/12 15:04:17 UTC

svn commit: r1708105 - 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: Mon Oct 12 13:04:17 2015
New Revision: 1708105

URL: http://svn.apache.org/viewvc?rev=1708105&view=rev
Log:
OAK-3504 - CopyOnRead directory should not schedule a copy task for non existent file

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=1708105&r1=1708104&r2=1708105&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 Mon Oct 12 13:04:17 2015
@@ -352,6 +352,16 @@ public class IndexCopier implements Copy
                 }
             }
 
+            //If file does not exist then just delegate to remote and not
+            //schedule a copy task
+            if (!remote.fileExists(name)){
+                if (log.isDebugEnabled()) {
+                    log.debug("[{}] Looking for non existent file {}. Current known files {}",
+                            indexPath, name, Arrays.toString(remote.listAll()));
+                }
+                return remote.openInput(name, context);
+            }
+
             CORFileReference toPut = new CORFileReference(name);
             CORFileReference old = files.putIfAbsent(name, toPut);
             if (old == null) {

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=1708105&r1=1708104&r2=1708105&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 Mon Oct 12 13:04:17 2015
@@ -142,6 +142,26 @@ public class IndexCopierTest {
     }
 
     @Test
+    public void nonExistentFile() throws Exception{
+        Directory baseDir = new RAMDirectory();
+        IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
+        CollectingExecutor executor = new CollectingExecutor();
+        IndexCopier c1 = new RAMIndexCopier(baseDir, executor, getWorkDir(), true);
+
+        Directory remote = new RAMDirectory();
+        Directory wrapped = c1.wrapForRead("/foo", defn, remote);
+
+        try {
+            wrapped.openInput("foo.txt", IOContext.DEFAULT);
+            fail();
+        } catch(FileNotFoundException ignore){
+
+        }
+
+        assertEquals(0, executor.commands.size());
+    }
+
+    @Test
     public void basicTestWithFS() throws Exception{
         IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
         IndexCopier c1 = new IndexCopier(sameThreadExecutor(), getWorkDir());