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>