[ 
https://issues.apache.org/jira/browse/OAK-3504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra updated OAK-3504:
---------------------------------
    Description: 
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@/usr/cq/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}

  was:
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}


> 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@/usr/cq/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