apache / lucene

Apache Lucene open-source search software
https://lucene.apache.org/
Apache License 2.0
2.67k stars 1.03k forks source link

IndexWriter.getReader() allocates file handles [LUCENE-2255] #3331

Closed asfimport closed 14 years ago

asfimport commented 14 years ago

I am not sure if this is a "bug" or really just me not reading the Javadocs right...

The IR returned by IW.getReader() leaks file handles if you do not close() it, leading to starvation of the available file handles/process. If it was clear from the docs that this was a new reader and not some reference owned by the writer then this would probably be ok. But as I read the docs the reader is internally managed by the IW, which at first shot lead me to believe that I shouldn't close it.

So perhaps the docs should be amended to clearly state that this is a caller-owns reader that must be closed? Attaching a simple app that illustrates the problem.


Migrated from LUCENE-2255 by Mikkel Kamstrup Erlandsen, resolved Feb 08 2010 Environment:

Ubuntu 9.10, Java 6

Attachments: LuceneManyCommits.java

asfimport commented 14 years ago

Mikkel Kamstrup Erlandsen (migrated from JIRA)

Leaks file handles via IW.getReader()

asfimport commented 14 years ago

Jason Rutherglen (migrated from JIRA)

You're not the first to report this... I wonder if we should also do a weak ref type of dealie that auto closes the reader for users who aren't calling IR.close?

To answer the question, yes, close on IR must be called. I can't directly do anything about the javadocs so I'll leave that for Mike.

asfimport commented 14 years ago

Simon Willnauer (@s1monw) (migrated from JIRA)

I see this coming up multiple times, we should document this properly in the javadoc and on the wiki. Jason, aren't you the NRT specialist here. What keeps you from attaching a patch for the IW javadoc?

simon

asfimport commented 14 years ago

Jason Rutherglen (migrated from JIRA)

What keeps you from attaching a patch for the IW javadoc?

Laziness and lack of motivation... :)

I'll post something to the issue, how's that?

asfimport commented 14 years ago

Michael McCandless (@mikemccand) (migrated from JIRA)

This has already been fixed on trunk... we added this to the javadocs a while back:

While the returned reader used IndexWriter to determine which segments to open, the returned reader is fully independent of the writer. EG you can close the writer and continue using the reader. And you must close the reader.

I'll backport that fix to 3.0 & 2.9.