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