The exceptions aren't expected. When you call IndexWriter.close(false), it's supposed to notify all running merges to abort, wait until they in fact do stop, and then return.
But it looks as if there's a silly thread hazard, whereby IndexWriter believes all merges have aborted, but in fact those 4 were just about to get started and "missed" the abort request, and then tried to start and hit the ACE. Mike On Sun, Aug 2, 2009 at 6:49 AM, Shai Erera<ser...@gmail.com> wrote: > Isn't this expected? I mean, if you close IndexWriter, but there are merges > run in the background, aren't they expected to hit an > AlreadyClosedException? > > Perhaps we should fix the test to check whether CMS hit this exception and > if so clear it (as AFAIU, it's expected), and leave any other exceptions? > This will require some change in CMS (to expose that information, through > e.g. getUnhandledExceptions). > > Or add to CMS.Thread.run() a catch for AlreadyClosedException and ignore it, > as we do for MergeAbortedException? > > Or, stop doing any merges if CMS.close() has been called? > > On Sun, Aug 2, 2009 at 12:49 AM, Michael Busch <busch...@gmail.com> wrote: >> >> While running 'ant test' I just got this failure (on Mac OS 10.5.7). Even >> worse, the next time I ran it the test passed, so this might be hard to >> reproduce. >> I haven't tried yet to find out what caused this. >> >> [junit] Exception in thread "Lucene Merge Thread #1" >> org.apache.lucene.index.MergePolicy$MergeException: >> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315) >> [junit] Caused by: org.apache.lucene.store.AlreadyClosedException: this >> IndexWriter is closed >> [junit] at >> org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:791) >> [junit] at >> org.apache.lucene.index.IndexWriter.getDirectory(IndexWriter.java:2303) >> [junit] at >> org.apache.lucene.index.SegmentMerger.<init>(SegmentMerger.java:88) >> [junit] at >> org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4942) >> [junit] at >> org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4598) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:235) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:291) >> [junit] Exception in thread "Lucene Merge Thread #2" >> org.apache.lucene.index.MergePolicy$MergeException: >> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315) >> [junit] Caused by: org.apache.lucene.store.AlreadyClosedException: this >> IndexWriter is closed >> [junit] at >> org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:791) >> [junit] at >> org.apache.lucene.index.IndexWriter.getDirectory(IndexWriter.java:2303) >> [junit] at >> org.apache.lucene.index.SegmentMerger.<init>(SegmentMerger.java:88) >> [junit] at >> org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4942) >> [junit] at >> org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4598) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:235) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:291) >> [junit] Exception in thread "Lucene Merge Thread #3" >> org.apache.lucene.index.MergePolicy$MergeException: >> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315) >> [junit] Caused by: org.apache.lucene.store.AlreadyClosedException: this >> IndexWriter is closed >> [junit] at >> org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:791) >> [junit] at >> org.apache.lucene.index.IndexWriter.getDirectory(IndexWriter.java:2303) >> [junit] at >> org.apache.lucene.index.SegmentMerger.<init>(SegmentMerger.java:88) >> [junit] at >> org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4942) >> [junit] at >> org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4598) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:235) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:291) >> [junit] Exception in thread "Lucene Merge Thread #4" >> org.apache.lucene.index.MergePolicy$MergeException: >> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315) >> [junit] Caused by: org.apache.lucene.store.AlreadyClosedException: this >> IndexWriter is closed >> [junit] at >> org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:791) >> [junit] at >> org.apache.lucene.index.IndexWriter.getDirectory(IndexWriter.java:2303) >> [junit] at >> org.apache.lucene.index.SegmentMerger.<init>(SegmentMerger.java:88) >> [junit] at >> org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4942) >> [junit] at >> org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4598) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:235) >> [junit] at >> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:291) >> [junit] ------------- ---------------- --------------- >> [junit] Testcase: >> testNoWaitClose(org.apache.lucene.index.TestIndexWriter): FAILED >> [junit] ConcurrentMergeScheduler hit unhandled exceptions >> [junit] junit.framework.AssertionFailedError: ConcurrentMergeScheduler >> hit unhandled exceptions >> [junit] at >> org.apache.lucene.util.LuceneTestCase.tearDown(LuceneTestCase.java:54) >> [junit] Test org.apache.lucene.index.TestIndexWriter FAILED >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-dev-h...@lucene.apache.org >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org