The proposed backport patch (v2) does not contain mod_proxy_hcheck.c
itself, so I took the one from trunk, easy enough :)
The (recent) changes around the call to
[ap_proxy_]is_socket_connected() in ap_proxy_connect_backend()) broke
the patch too (minor change).

Regarding the implementation, IIUC, there is a scheduled hc thread per
BalancerMember, each running hc_check().
The threads are somehow run one child at a time, thanks to
mod_watchdog, but I'm not too familiar with it, so I may have
overlooked that...

However, it seems that there are some paths where the worker threads
can allocate on (or use) the server config pool (ctx->p, a subpool of
pconf).
This (AFAICT) concerns hc_get_hcworker(), hc_determine_connection(),
hc_get_backend() (where backend->p == ctx->p ??) and hc_check_http().
Shouldn't we either use a lock or create a subpool there?
Or maybe use ptemp but it looks more like a thread pool, whereas
ctx->p usages seem more related to process wide initialization (once?
via balancer-manager only?)...

Thanks for clarifiying.

Anyway, this is really cool stuff!

Regards,
Yann.

Reply via email to