Author: jfrederic.clere(a)jboss.com
Date: 2008-09-29 12:40:34 -0400 (Mon, 29 Sep 2008)
New Revision: 1916
Modified:
trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c
Log:
Change algorithme to busyness (to prevent the sides effect of by requests).
Modified: trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c
===================================================================
--- trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c 2008-09-29 10:13:46 UTC
(rev 1915)
+++ trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c 2008-09-29 16:40:34 UTC
(rev 1916)
@@ -822,7 +822,9 @@
} else {
worker->s->lbstatus += worker->s->lbfactor;
total_factor += worker->s->lbfactor;
- if (!mycandidate || worker->s->lbstatus >
mycandidate->s->lbstatus) {
+ if (!mycandidate
+ || worker->s->busy < mycandidate->s->busy
+ || (worker->s->busy == mycandidate->s->busy
&& worker->s->lbstatus > mycandidate->s->lbstatus)) {
mycandidate = worker;
}
}
@@ -1598,6 +1600,8 @@
*worker = runtime;
}
+ (*worker)->s->busy++;
+
/* Add balancer/worker info to env. */
apr_table_setn(r->subprocess_env,
"BALANCER_NAME", (*balancer)->name);
@@ -1657,6 +1661,9 @@
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy_cluster_post_request for (%s)", balancer->name);
+ if (worker && worker->s->busy)
+ worker->s->busy--;
+
return OK;
}
Show replies by date