On 2/14/24 08:19, Ruediger Pluem wrote:
On 2/9/24 11:59 AM, jean-frederic clere wrote:
Hi,
I have noted to the reset() clean up too much in the balancers:
mod_lbmethod_bybusyness.c for example does:
+++
for (i = 0; i < balancer->workers->nelts; i++, worker++) {
(*worker)->s->lbstatus = 0;
ap_proxy_set_busy_count(*worker, 0); /* BAD */
}
+++
In fact reset() is called by ap_proxy_initialize_balancer() when a child
process is created... Resetting the counters messes up
the logic.
Does it make sense to stop calling reset() from ap_proxy_initialize_balancer()
or is it better to fix all reset()?
I am not sure what the original idea / intention of reset was. Until this is
clarified I would not remove the call to reset in
ap_proxy_initialize_balancer(). In ap_proxy_sync_balancer the call to it is
guarded by a check for the need_reset flag. Maybe this
gives a hint.
The need_reset is set when a worker is enabled or when the load
balancing method is changed.
There is another thing adding a new worker via /balancer-manager/ probably
requires some kind of reset() otherwise all the load
moves to the new worker which is not the best.... May be calling age() or
triggering calls to age() can help.
Doesn't ap_proxy_sync_balancer take care of this which is called before
processing a request?
Regards
Rüdiger
--
Cheers
Jean-Frederic