https://bugs.openldap.org/show_bug.cgi?id=8958

--- Comment #26 from Howard Chu <[email protected]> ---
(In reply to Howard Chu from comment #25)
> (In reply to Hallvard Furuseth from comment #17)
> 
> > Duuh, right.  I got stuck looking for what's special about the
> > indexing task and couldn't find it:-(  I need to make it special.
> > 
> > So, let tasks declare their expected speed until finish or
> > between pausechecks.  At FAST=1 (default) and SLOW=0.
> > A pause only stops tasks with speed < ltp_pause.
> > In thread_pool_pause(), replace the WANT_PAUSE stage with
> > 
> >    while (++ltp_pause <= max speed) {
> >      wait until no more tasks with speed < ltp_pause;
> >    }
> > 
> > Then fast tasks should breeze past slow ones when preparing
> > to pause.  Until all threads have slow tasks, anyway.
> 
> I don't understand how this solves anything. If a slow indexing
> task is currently running, and a fast config mod comes in, it's
> still the case that the config change could pull the DB out from
> under the indexer task. So there's nothing safe about letting the
> fast task progress while the slow task is still running.

I don't think we should be changing anything else about how tpool
handles pauses. We should just be fixing this specific case of the
indexer being a slow task, by implementing checkpointing into the
indexer. I.e., when it detects a pause request it should save its
current progress and pause itself. If it gets resumed it can pick up
where it left off, or if a config change affects it it can abort or
or start over. A checkpointing mechanism is needed anyway, for the
case of a (clean) shutdown while the indexer is running.

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to