[
https://issues.apache.org/jira/browse/LUCENE-887?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12500780
]
Michael McCandless commented on LUCENE-887:
-------------------------------------------
> > Say there are 2 addDocument calls in-flight, and the first one tries
> > to flush buffered docs but hits the IndexWRiterInterruptException.
> > You catch this, clear the interrupt flag but before you then call
> > flushRAMSegments(false) the other addDocument thread get scheduled and
> > enters the synchronized block in addDocument and then kicks off a
> > flush with a merge. I think at this point the merge would happily run
> > to completion because the interrupt flag got cleared?
>
> Hmm... yes I understand. Actually do we even have to call
> flushAfterInterrupt() in the catch clause of addDocument()? The
> IndexWriterInterruptException is only thrown in case shutdown() has
> been called, and in that case shutdown() waits anyways for all
> in-flight addDocument() calls to complete and flushes the buffered
> docs then. Right? Or maybe I'm completely confused now... ;-)
I think you are right: just removing the call to flushAfterInterrupt()
in the catch clause of addDocument() should correct this. That way
there is only one place&time (inside shutdown()) where the
flushAfterInterrupt() is called and this should properly prevent any
merging from taking place. Phew!
Best to make a super stressful thread test case and run in on an N>1
CPU/core machine to be really sure the different concurrency paths are
well explored :)
> Interruptible segment merges
> ----------------------------
>
> Key: LUCENE-887
> URL: https://issues.apache.org/jira/browse/LUCENE-887
> Project: Lucene - Java
> Issue Type: New Feature
> Components: Index
> Reporter: Michael Busch
> Priority: Minor
> Attachments: ExtendedIndexWriter.java
>
>
> Adds the ability to IndexWriter to interrupt an ongoing merge. This might be
> necessary when Lucene is e. g. running as a service and has to stop indexing
> within a certain period of time due to a shutdown request.
> A solution would be to add a new method shutdown() to IndexWriter which
> satisfies the following two requirements:
> - if a merge is happening, abort it
> - flush the buffered docs but do not trigger a merge
> See also discussions about this feature on java-dev:
> http://www.gossamer-threads.com/lists/lucene/java-dev/49008
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]