Chetan Mehrotra created OAK-3504:
------------------------------------

             Summary: CopyOnRead directory should not schedule a copy task for 
non existent file
                 Key: OAK-3504
                 URL: https://issues.apache.org/jira/browse/OAK-3504
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: lucene
            Reporter: Chetan Mehrotra
            Assignee: Chetan Mehrotra
            Priority: Minor
             Fix For: 1.3.9, 1.0.23, 1.2.8


CopyOnWriteDirectory currently schedules a copy task for file which does exist. 
This eventually results in FileNotFoundException and that gets logged as 
warning. In normal usage this should not happen at the first place i.e. look up 
of non existent file. However in case of corruption it is seen that Lucene 
tries to lookup segment files with increasing generation number and they flood 
the log with such exception.

In such a case no scheduling of file copy should be done and instead lookup 
call should be directly delegated to remote directory

{noformat}
28.09.2015 12:11:08.745 *WARN* [oak-lucene-0] 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier Error occurred while 
copying file [segments_25y] from OakDirectory@5970597 
lockFactory=org.apache.lucene.store.NoLockFactory@51b451b4 to 
NIOFSDirectory@/usd/as67709a/data/v04.cqa.a/repository/_cqa/repository/index/e5a943cdec3000bd8ce54924fd2070ab5d1d35b9ecf530963a3583d43bf28293/2
 
lockFactory=NativeFSLockFactory@/usd/as67709a/data/v04.cqa.a/repository/_cqa/repository/index/e5a943cdec3000bd8ce54924fd2070ab5d1d35b9ecf530963a3583d43bf28293/2
java.io.FileNotFoundException: segments_25y
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory.openInput(OakDirectory.java:133)
        at org.apache.lucene.store.Directory.copy(Directory.java:185)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier$CopyOnReadDirectory$1.run(IndexCopier.java:312)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:767)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to