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

--- Comment #28 from Hallvard Furuseth <[email protected]> ---
On 03.08.2021 14:36, [email protected] wrote:
> https://bugs.openldap.org/show_bug.cgi?id=8958
> 
> --- Comment #25 from Howard Chu <[email protected]> ---
> (In reply to Hallvard Furuseth from comment #17)
> 
>> (...) 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
Fast tasks still wait for *running* slow tasks.  And when
there is no pause involved, slow tasks get scheduled normally.

This is only about scheduling when something wants a pause.
setspeed() does CHECK_PAUSE, standing aside for faster tasks.

Then, a fast task which wants a pause (cn=config change #2) won't
block other fast tasks while a slower task (indexer) is running.
So normal tasks will keep getting scheduled, instead of slapd
locking up for them.

This all depends on there being only a few config changes/slow
tasks at any time, since they do occupy a thread.

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

Reply via email to