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>