Hi Guys,
So I’m seeing a problem in production that is very bizarre and I wanted to see
if anyone else has encountered this issue and/or has a suggestion or fix. Here
goes:
We create a wrapper around an index and searcher manager to encapsulate both.
First we create the IndexWriter and then immediately after create the
SearcherManager, like this:
indexWriter = new IndexWriter(indexDirectory, getWriterConfig());
searcherManager = new SearcherManager(indexWriter, true, new
ExecutorSearcherFactory());
During construction of the SearcherManager this is thrown:
Caused by: org.apache.lucene.store.AlreadyClosedException: this IndexWriter is
closed
at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:766)
at
org.apache.lucene.index.IndexWriter.getDirectory(IndexWriter.java:1909)
at
com.triagewireless.h1s.session.data.index.LuceneIndexMergeScheduler.getIndexDirectory(LuceneIndexMergeScheduler.java:162)
at
com.triagewireless.h1s.session.data.index.LuceneIndexMergeScheduler.access$000(LuceneIndexMergeScheduler.java:31)
at
com.triagewireless.h1s.session.data.index.LuceneIndexMergeScheduler$MergeTask.equals(LuceneIndexMergeScheduler.java:127)
at
java.util.concurrent.ArrayBlockingQueue.contains(ArrayBlockingQueue.java:497)
at
com.triagewireless.h1s.session.data.index.LuceneIndexMergeScheduler.merge(LuceneIndexMergeScheduler.java:148)
at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:2740)
at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:2734)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:457)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:399)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:296)
at
org.apache.lucene.search.SearcherManager.<init>(SearcherManager.java:82)
at
com.triagewireless.h1s.session.data.index.LuceneIndex.initNoCache(LuceneIndex.java:312)
at
com.triagewireless.h1s.session.data.index.LuceneIndex.init(LuceneIndex.java:270)
at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:346)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:299)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:132)
... 57 more
Why? No other threads are acting on this index, etc. The index writer was just
created so how could it already be closed?
I’m completely baffled on this one guys… so many thanks in advance for your
help! I’ll take any suggestions on a possible mitigation too if anyone thinks
of any.
Blessings,
Brian Call
Manager, Systems Software Development
Work: +1 (619) 373-4840 | Cell: +1 (619) 344-1013
<http://soterawireless.com/> Sotera Wireless, Inc.
10020 Huennekens Street San Diego, CA 92121, USA
Phone: +1 (858) 427-4620 | Fax: +1 (858) 999-2487
PRIVILEGED AND CONFIDENTIAL COMMUNICATION: This electronic transmission, and
any documents attached hereto, may contain confidential and/or legally
privileged information. The information is intended only for use by the
recipient named above. If you have received this electronic message in error,
please notify the sender and delete the electronic message. Any disclosure,
copying, distribution, or use of the contents of information received in error
is strictly prohibited.