On 14/02/2006, at 7:44 AM, Doug Cutting wrote:

Paul Smith wrote:
We're using Lucene 1.4.3, and after hunting around in the source code just to see what I might be missing, I came across this, and I'd just like some comments.

Please try using a 1.9 build to see if this is something that's perhaps already been fixed.

is 1.9 binary backward compatible? (both source code and index format).

CompoundFileReader has an inner-class CSInputStream which is used to read the stream (and we're using the Compound format, so this is relevant here). However it overrides InputStream.close(), but does not call super.close(). After tracing around where this is all used I believe that this method REALLY SHOULD be calling super.close() (or not overriding) it,because CompoundFileReader will be given an InputStream to wrap, eventually coming down to FSInputStream which apparently then calss Descriptor.close().

No, all CSInputStream's share a single FSInputStream, so the FSInputStream shouldn't be closed until all of the CSInputStream's, have been closed. This is done by CompoundFileReader.close(). It sounds like that's what's not getting called. As you update indexes, how do you close stale readers?

Yes, after looking at the code again I see that it extends from a Lucene class called InputStream, and I had assumed it was java.io.InputStream.

I'm going to take yet-another look at our code, but nothing is obvious. Our current production environment is running in a side-by- side mode. There are no searches being performed, only indexing as we test out our indexing support/monitoring, and fail-over techniques.

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to