lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin <cry...@yahoo.com>
Subject Re: ClosedChannelException from IndexWriter.getReader()
Date Thu, 08 Apr 2010 22:18:29 GMT
>From an architecture standpoint, wait/notify does require extra logic to catch any notify
calls while a searcher is being replaced.  Using interrupt() was quite convenient at insuring
the searcher was up-to-date.




----- Original Message ----
From: Simon Willnauer <simon.willnauer@googlemail.com>
To: java-user@lucene.apache.org
Sent: Thu, April 8, 2010 4:53:08 PM
Subject: Re: ClosedChannelException from IndexWriter.getReader()

Argh! one more running into this issue.

It still bugs me that NIOFSDirectory struggles so badly if interrupt is used.

simon

On Thu, Apr 8, 2010 at 11:19 PM, Justin <crynax@yahoo.com> wrote:
> We have a custom IndexSearcher that fetches a near real-time reader and calls FieldCache.DEFAULT.getStrings()
after a calculated length of time or when certain changes are made to the index (requiring
immediate searchability).  The thread slept for that length of time unless an interrupt was
given.  wait/notify should accomplish the same without interrupting NIOFSDirectory.
>
>
>
>
> ----- Original Message ----
> From: Michael McCandless <lucene@mikemccandless.com>
> To: java-user@lucene.apache.org
> Sent: Thu, April 8, 2010 3:50:41 PM
> Subject: Re: ClosedChannelException from IndexWriter.getReader()
>
> OK, phew :)
>
> Yea warming in a separate thread is common... but why does
> Thread.interrupt() come into play in your app for warming?
>
> Mike
>
> On Thu, Apr 8, 2010 at 4:38 PM, Justin <crynax@yahoo.com> wrote:
>> In fact, we are using Thread.interrupt() to warm up a searcher in a separate thread
(not really that uncommon, is it?).  We may switch to Object::wait(long) and Object::notify()
instead of switching the Directory implementation.  Thanks for recognizing the issue!
>>
>>
>>
>>
>> ----- Original Message ----
>> From: Michael McCandless <lucene@mikemccandless.com>
>> To: java-user@lucene.apache.org
>> Sent: Thu, April 8, 2010 2:41:07 PM
>> Subject: Re: ClosedChannelException from IndexWriter.getReader()
>>
>> Are you using Future.cancel or directly using Thread.interrupt?  If so
>> it could be this nasty issue:
>>
>>    https://issues.apache.org/jira/browse/LUCENE-2239
>>
>> Try temporarily using a Directory impl other than NIOFSDirectory and
>> see if the problem still happens?
>>
>> Mike
>>
>> On Thu, Apr 8, 2010 at 2:14 PM, Justin <crynax@yahoo.com> wrote:
>>> I'm getting a ClosedChannelException from IndexWriter.getReader().  I don't think
the writer has been closed and, if it were, I would expect an AlreadyClosedException as described
in the API documentation.  Does anyone have an idea what might be wrong?  The disk is not
full and the permissions look correct.
>>>
>>> Here the stack trace from revision 926791:
>>>
>>> java.nio.channels.ClosedChannelException
>>>        at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:88)
>>>        at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:613)
>>>        at org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:150)
>>>        at org.apache.lucene.store.BufferedIndexInput.readBytes(BufferedIndexInput.java:139)
>>>        at org.apache.lucene.index.CompoundFileReader$CSIndexInput.readInternal(CompoundFileReader.java:257)
>>>        at org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:160)
>>>        at org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:39)
>>>        at org.apache.lucene.store.IndexInput.readInt(IndexInput.java:74)
>>>        at org.apache.lucene.index.FieldsReader.<init>(FieldsReader.java:114)
>>>        at org.apache.lucene.index.SegmentReader$CoreReaders.openDocStores(SegmentReader.java:294)
>>>        at org.apache.lucene.index.SegmentReader.openDocStores(SegmentReader.java:590)
>>>        at org.apache.lucene.index.IndexWriter$ReaderPool.get(IndexWriter.java:640)
>>>        at org.apache.lucene.index.IndexWriter$ReaderPool.getReadOnlyClone(IndexWriter.java:591)
>>>        at org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:138)
>>>        at org.apache.lucene.index.ReadOnlyDirectoryReader.<init>(ReadOnlyDirectoryReader.java:36)
>>>        at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:423)
>>>        at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:387)
>>>
>>> Thanks,
>>> Justin
>>>
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


      

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message