[ 
https://issues.apache.org/jira/browse/LUCENE-5912?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14115043#comment-14115043
 ] 

Michael McCandless commented on LUCENE-5912:
--------------------------------------------

Sheesh, so it is actually sharing SegmentReaders from the writer's pool?  Talk 
about confusing code ... none of can figure out how it works.

Maybe we should add a simple test case confirming that readers are in fact in 
common, to be sure :)  I'll work on this.

> Non-NRT directory readers don't reuse segments maintained IndexWriter's 
> segment reader pool
> -------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-5912
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5912
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: core/index
>    Affects Versions: 4.6.1
>            Reporter: Vitaly Funstein
>
> Currently, if you attempt to open a reader into an index at a specific commit 
> point, it will always behave as though it's opening a completely new index - 
> even if one were to use the {{DirectoryReader.openIfChanged(DirectoryReader, 
> IndexCommit)}} API, and pass in an NRT reader instance. What should ideally 
> happen here is that the SegmentReader pool managed by IndexWriter linked to 
> the NRT reader gets reused for the commit point open as much as possible, to 
> avoid wasting heap space.
> The problem becomes evident when looking at the code in DirectoryReader:
> {code}
> protected DirectoryReader doOpenIfChanged(final IndexCommit commit) throws 
> IOException {
>     ensureOpen();
>     // If we were obtained by writer.getReader(), re-ask the
>     // writer to get a new reader.
>     if (writer != null) {
>       return doOpenFromWriter(commit);
>     } else {
>       return doOpenNoWriter(commit);
>     }
>   }
>   private DirectoryReader doOpenFromWriter(IndexCommit commit) throws 
> IOException {
>     if (commit != null) {
>       return doOpenFromCommit(commit);
>     }
> ......
> {code}
> Looks like the fact that a commit point is being re-opened trumps the 
> presence of the associated IndexWriter.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to