On 09/02/2007 04:57 PM, Vinicius Petrucci wrote:
> Hi Guys,
>
> I've read Ruediger's patch about preventing mod_proxy_balancer from
> overwriting the status of workers when creating a new child process
> (http://svn.apache.org/viewcvs?rev=374929&view=rev).
>
> I'm running the latest stable release of Apache (2.2.4) and I think
> the same bug is overwriting the lbfactor value to 1 (original
> configuration) when creating a new child process. Is it really a bug?
> How can I prevent that?
Can you please try if the attached patch against trunk fixes your issue
(also applies for 2.2.x with little fuzz)?
Can you please open a bug report in bugzilla for this? This eases tracking
for us. Thanks.
I CCed [email protected] as this is the correct mailing list for
such issues (apart from bugzilla as mentioned above).
Regards
Rüdiger
Index: modules/proxy/mod_proxy_balancer.c
===================================================================
--- modules/proxy/mod_proxy_balancer.c (revision 572243)
+++ modules/proxy/mod_proxy_balancer.c (working copy)
@@ -86,22 +86,23 @@
{
int i;
proxy_worker *workers;
+ int worker_is_initialized;
workers = (proxy_worker *)balancer->workers->elts;
for (i = 0; i < balancer->workers->nelts; i++) {
+ worker_is_initialized = PROXY_WORKER_IS_INITIALIZED(workers);
ap_proxy_initialize_worker_share(conf, workers, s);
ap_proxy_initialize_worker(workers, s);
+ if (!worker_is_initialized) {
+ /* Set to the original configuration */
+ workers[i].s->lbstatus = workers[i].s->lbfactor =
+ (workers[i].lbfactor ? workers[i].lbfactor : 1);
+ workers[i].s->lbset = workers[i].lbset;
+ }
++workers;
}
- workers = (proxy_worker *)balancer->workers->elts;
- for (i = 0; i < balancer->workers->nelts; i++) {
- /* Set to the original configuration */
- workers[i].s->lbstatus = workers[i].s->lbfactor =
- (workers[i].lbfactor ? workers[i].lbfactor : 1);
- workers[i].s->lbset = workers[i].lbset;
- }
/* Set default number of attempts to the number of
* workers.
*/