You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Mukul Ranjan <mr...@egain.com> on 2016/06/30 10:34:54 UTC
Issue observed while releasing searcher from SearcherManager for
MultiSearcher
Hi,
I'm observing below issue while getting instance of indexWriter after releasing searcher from searcherManager
java.lang.IllegalArgumentException: Directory MMapDirectory@C:\work\egain\eService\index\ARTICLE_201606160754 lockFactory=org.apache.lucene.store.NativeFSLockFactory@1ec79746 still has pending deleted files; cannot initialize IndexWriter
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:767)
I'm suspecting issue may be with the MultiSearcher that I'm using for searcher over multiple index folders.
I'm getting the searcher instance by using below code - (Note: Searchable is the object of searchManager)
IndexReader[] readers = new IndexReader[searchables.length];
IndexSearcher[] tempSearchers = new IndexSearcher[searchables.length];
for (int i = 0; i < searchables.length; i++)
{
tempSearchers[i] = searchables[i].getSearcher(callerContext);
readers[i] = (tempSearchers[i]).getIndexReader();
}
MultiReader multiReader = new MultiReader(readers, false);
IndexSearcher searcher = new IndexSearcher(multiReader);
and releasing the searchManager using the below code-
for (int i = 0; i < searchables.length; i++)
try
{
searchables[i].releaseSearcher(tempSearchers[i]);
}
catch (IOException e)
{
mLogger.logException(Level.ERROR, callerContext, mSrcInfo, "Falied to release searcher ", e);
}
}
Do you think it's right way to use MultiSearcher? If not, please suggest a way to use MultiSearcher.
Thanks,
Mukul Ranjan
Visit eGain on YouTube<https://www.youtube.com/user/egainchannel> and LinkedIn<https://www.linkedin.com/company/egain-corporation>