On Thu, Dec 2, 2021 at 9:07 PM Ruediger Pluem <rpl...@apache.org> wrote: > > On 12/2/21 7:31 PM, Yann Ylavic wrote: > > > > Full patch attached, we need to retain active_daemons too for this to > > work actually. > > > > Why do we need to retain active_daemons? When we get back after a restart > there should be no active daemons any longer. They > should be all gone or shutting down. The only active daemons we should have > then should be the ones of the new generation.
Retaining active_daemons probably does not belong to the same patch than the MaxSpareThreads changes (like I did), but it looks like restarting (gracefully or not) with active_daemons = 0 is not correct because the first call to perform_idle_server_maintenance() will find the stopping processes old gen and do: ps = &ap_scoreboard_image->parent[i]; if (ps->pid != 0) { int child_threads_active = 0; if (ps->quiescing == 1) { ps->quiescing = 2; active_daemons--; } ... } Thus doubly account for the stopping daemons and leaving active_daemons as a negative value? I think that since r1893520 and the correct accounting of active_daemons throughout perform_idle_server_maintenance() we'd better let perform_idle_server_maintenance() handle retained->active_daemons entirely. Am I missing something? Cheers; Yann.