> > Hello, > > AFAICS from invalidatSharedReader() in AbstractReader the > wrong method is called. Currently it is: > > sharedReader.close(); > > This means, that since SharedIndexReader does not overload > the FilterIndexReader.close() method
Which I now see by the way is final, hence the doClose() is the one the use > , the close() method from > org.apache.lucene.index.IndexReader is called, closing the > reader. But if I am correct there may be clients stored in > the IdentityHashMap still working with this reader? > > Therefore probably, the (unused) sharedReader.doClose() > method in sharedReader is the one that should be called from > AbstractIndex.invalidateSharedReader(), right? > > If I am correct, ATM possible methods on a closed reader can > be done [1] > > Regards Ard > > [1] > http://lucene.zones.apache.org:8080/hudson/job/Lucene-Nightly/ javadoc/org/apache/lucene/index/IndexReader.html#close() > > code parts: > > AbstractIndex: > > protected synchronized void invalidateSharedReader() throws > IOException { > // invalidate shared reader > if (sharedReader != null) { > sharedReader.close(); > sharedReader = null; > } > } > > > SharedIndexReader: > > protected synchronized void doClose() throws IOException { > if (clients.isEmpty()) { > super.doClose(); > } else { > closeRequested = true; > } > } > > -- > > Hippo > Oosteinde 11 > 1017WT Amsterdam > The Netherlands > Tel +31 (0)20 5224466 > ------------------------------------------------------------- > [EMAIL PROTECTED] / [EMAIL PROTECTED] / http://www.hippo.nl > -------------------------------------------------------------- >
