Mark, Thanks for the quick fix. Actually, it is possible that there might had been simultaneous queries using the MultiSearcher. I assumed it was thread-safe, thus was re-using the same instance. I'll update my application code as well.
Thanks, -vivek On Feb 15, 2008 5:56 PM, Mark Miller <[EMAIL PROTECTED]> wrote: > Here is the fix: https://issues.apache.org/jira/browse/LUCENE-1026 > > > vivek sar wrote: > > Mark, > > > > There seems to be some issue with DefaultMultiIndexAccessor.java. I > > got following NPE exception, > > > > 2008-02-13 07:10:28,021 ERROR [http-7501-Processor6] ReportServiceImpl > > - > > java.lang.NullPointerException > > at > > org.apache.lucene.indexaccessor.DefaultMultiIndexAccessor.release(DefaultMultiIndexAccessor.java:89) > > > > Looks like the IndexAccessor for one of the Searcher in the > > MultiSearcher returned null. Not sure how is that possible, any ideas > > how is that possible? > > > > In my case it caused a critical error as the writer thread was stuck > > forever (we found out after couple of days) because of this, > > > > "PS thread 9" prio=1 tid=0x00002aac70eb95d0 nid=0x6ba in Object.wait() > > [0x0000000047533000..0x0000000047533b80] > > at java.lang.Object.wait(Native Method) > > - waiting on <0x00002aab3e5c7700> (a > > org.apache.lucene.indexaccessor.DefaultIndexAccessor) > > at java.lang.Object.wait(Unknown Source) > > at > > org.apache.lucene.indexaccessor.DefaultIndexAccessor.waitForReadersAndCloseCached(DefaultIndexAccessor.java:593) > > at > > org.apache.lucene.indexaccessor.DefaultIndexAccessor.release(DefaultIndexAccessor.java:510) > > - locked <0x00002aab3e5c7700> (a > > org.apache.lucene.indexaccessor.DefaultIndexAccessor) > > > > The only way to recover was to re-start the application. > > > > I use both MultiSearcher and IndexSearcher in my application, I've > > looked at your code but not able to pinpoint how can it go wrong? Of > > course, you do have to check for null in the > > MultiIndexAccessor.release, but how could you get null index accessor > > at first place? > > > > I do call IndexAccessor.close during partitioning of indexes, but the > > close should wait for all Searchers to close before doing anything. > > > > Do you have any updates to your code since 02/04/2008? > > > > Thanks, > > -vivek > > > > On Feb 6, 2008 8:37 AM, Jay <[EMAIL PROTECTED]> wrote: > > > >> Thanks for your clarifications, Mark! > >> > >> > >> Jay > >> > >> > >> Mark Miller wrote: > >> > >>>> 5. Although currently IndexSearcher.close() does almost nothing except > >>>> to close the internal index reader, it might be a safer to close > >>>> searcher itself as well in closeCachedSearcher(), just in case, the > >>>> searcher may have other resources to release in the future version of > >>>> Lucene. > >>>> > >>> Didn't catch that "as well". You are right, great idea Jay, thanks. > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]