lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-887) Interruptible segment merges
Date Fri, 01 Jun 2007 17:49:15 GMT

    [ 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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message