Author: jfrederic.clere(a)jboss.com
Date: 2008-06-18 04:16:49 -0400 (Wed, 18 Jun 2008)
New Revision: 1718
Modified:
trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c
Log:
Arrange the lbfactor logic.
Modified: trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c
===================================================================
--- trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c 2008-06-18 08:07:42 UTC
(rev 1717)
+++ trunk/mod_cluster/native/mod_proxy_cluster/mod_proxy_cluster.c 2008-06-18 08:16:49 UTC
(rev 1718)
@@ -724,45 +724,43 @@
update_workers_node(conf, r->pool, r->server);
/* First try to see if we have available candidate */
- do {
- checking_standby = checked_standby = 0;
- while (!mycandidate && !checked_standby) {
- worker = (proxy_worker *)balancer->workers->elts;
- for (i = 0; i < balancer->workers->nelts; i++, worker++) {
+ checking_standby = checked_standby = 0;
+ while (!mycandidate && !checked_standby) {
+ worker = (proxy_worker *)balancer->workers->elts;
+ for (i = 0; i < balancer->workers->nelts; i++, worker++) {
- /* standby logic
- * lbfactor: -1 broken node.
- * 0 standby.
- * >0 factor to use.
- */
- if (worker->s->lbfactor < 0 || (worker->s->lbfactor == 0
&& !checking_standby))
- continue;
+ /* standby logic
+ * lbfactor: -1 broken node.
+ * 0 standby.
+ * >0 factor to use.
+ */
+ if (worker->s->lbfactor < 0 || (worker->s->lbfactor == 0
&& !checking_standby))
+ continue;
- /* If the worker is in error state the STATUS logic will retry it */
- if (!PROXY_WORKER_IS_USABLE(worker)) {
- continue;
- }
+ /* If the worker is in error state the STATUS logic will retry it */
+ if (!PROXY_WORKER_IS_USABLE(worker)) {
+ continue;
+ }
- /* Take into calculation only the workers that are
- * not in error state or not disabled.
- * and that can map the context.
- */
- if (PROXY_WORKER_IS_USABLE(worker) && iscontext_host_ok(r,
balancer, worker)) {
- if (worker->s->lbfactor == 0 && checking_standby) {
+ /* Take into calculation only the workers that are
+ * not in error state or not disabled.
+ * and that can map the context.
+ */
+ if (PROXY_WORKER_IS_USABLE(worker) && iscontext_host_ok(r, balancer,
worker)) {
+ if (worker->s->lbfactor == 0 && checking_standby) {
+ mycandidate = worker;
+ break; /* Done */
+ } else {
+ worker->s->lbstatus += worker->s->lbfactor;
+ total_factor += worker->s->lbfactor;
+ if (!mycandidate || worker->s->lbstatus >
mycandidate->s->lbstatus) {
mycandidate = worker;
- break; /* Done */
- } else {
- worker->s->lbstatus += worker->s->lbfactor;
- total_factor += worker->s->lbfactor;
- if (!mycandidate || worker->s->lbstatus >
mycandidate->s->lbstatus) {
- mycandidate = worker;
- }
}
}
}
- checked_standby = checking_standby++;
}
- } while (!mycandidate);
+ checked_standby = checking_standby++;
+ }
if (mycandidate) {
mycandidate->s->lbstatus -= total_factor;
Show replies by date