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

Chetan Mehrotra updated OAK-6777:
---------------------------------
    Attachment: OAK-6777-v1.patch

[patch|^OAK-6777-v1.patch] for the same.

Issue was occurring because the "dirReader" instance was being used for 2 
different purpose. 1) For the current NRTIndex reader and 2) for previous index 
for newer NRTIndex. This caused race condition where reader from previous was 
getting closed due to IndexTracker refresh while still being in use

As a fix NRTIndex now use two different reader instances and manages there 
lifecycle separately. This also required a change in NRTIndexFactory to 
explicitly disconnect the previous index so as to let its refCount decrement 
properly

[~catholicon] Please review once

> IndexReader closed exception in previous reader
> -----------------------------------------------
>
>                 Key: OAK-6777
>                 URL: https://issues.apache.org/jira/browse/OAK-6777
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: lucene
>    Affects Versions: 1.6.5
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>              Labels: candidate_oak_1_6
>             Fix For: 1.8
>
>         Attachments: OAK-6777-v1.patch
>
>
> Another variant of index reader closed exception as reported in OAK-6635 is 
> seen for previous readers
> {noformat}
> 2017-10-03 21:21:41,810 ERROR NA [oak-lucene-16] 
> o.a.j.o.p.i.l.h.DocumentQueue - Uncaught exception 
> org.apache.lucene.store.AlreadyClosedException: this IndexReader is closed
>       at org.apache.lucene.index.IndexReader.ensureOpen(IndexReader.java:262)
>       at 
> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:271)
>       at 
> org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:250)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.createReader(NRTIndex.java:257)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getPrimaryReader(NRTIndex.java:113)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getReaders(NRTIndex.java:148)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.getNRTReaders(IndexNodeManager.java:243)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.refreshReaders(IndexNodeManager.java:203)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.access$100(IndexNodeManager.java:53)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager$1.run(IndexNodeManager.java:104)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.TimedRefreshPolicy.refreshIfRequired(TimedRefreshPolicy.java:59)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.TimedRefreshPolicy.refreshOnReadIfRequired(TimedRefreshPolicy.java:40)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.acquire(IndexNodeManager.java:152)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.acquireIndexNode(IndexTracker.java:193)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.processDocs(DocumentQueue.java:235)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.addDocsToIndex(DocumentQueue.java:214)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.access$500(DocumentQueue.java:55)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue$2$1.call(DocumentQueue.java:121)
>       at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue$2$1.call(DocumentQueue.java:96)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to