You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jf...@apache.org on 2006/07/29 23:08:00 UTC
svn commit: r426837 - in
/httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy: mod_proxy.c
mod_proxy.h proxy_util.c
Author: jfclere
Date: Sat Jul 29 14:08:00 2006
New Revision: 426837
URL: http://svn.apache.org/viewvc?rev=426837&view=rev
Log:
Copy the workers to the comarea for the checker in the post-config.
(Instead doing it when parsing the configuration file).
Modified:
httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.c
httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.h
httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/proxy_util.c
Modified: httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.c?rev=426837&r1=426836&r2=426837&view=diff
==============================================================================
--- httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.c (original)
+++ httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.c Sat Jul 29 14:08:00 2006
@@ -1151,13 +1151,11 @@
}
}
else {
- int adding = 0;
proxy_worker *worker = ap_proxy_get_worker(cmd->temp_pool, conf, r);
if (!worker) {
const char *err = ap_proxy_add_worker(&worker, cmd->pool, conf, r);
if (err)
return apr_pstrcat(cmd->temp_pool, "ProxyPass ", err, NULL);
- adding = 1;
} else {
ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server,
"worker %s already used by another worker", worker->name);
@@ -1170,10 +1168,6 @@
if (err)
return apr_pstrcat(cmd->temp_pool, "ProxyPass ", err, NULL);
}
-
- /* XXX: ProxyPass is not a good name look for Location? */
- if (adding)
- proxy_checkstorage_add_entry(worker, "ProxyPass");
}
return NULL;
}
@@ -1523,7 +1517,6 @@
const apr_array_header_t *arr;
const apr_table_entry_t *elts;
int i;
- int adding = 0;
if (cmd->path)
path = apr_pstrdup(cmd->pool, cmd->path);
@@ -1559,7 +1552,6 @@
const char *err;
if ((err = ap_proxy_add_worker(&worker, cmd->pool, conf, name)) != NULL)
return apr_pstrcat(cmd->temp_pool, "BalancerMember ", err, NULL);
- adding = 1;
} else {
ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server,
"worker %s already used by another worker", worker->name);
@@ -1585,9 +1577,6 @@
}
/* Add the worker to the load balancer */
ap_proxy_add_worker_to_balancer(cmd->pool, balancer, worker);
- /* XXX: Holy cow: The worker can belong to more that one balancer! */
- if (adding)
- proxy_checkstorage_add_entry(worker, balancer->name);
return NULL;
}
@@ -1868,6 +1857,9 @@
/* if we have a memory provider create the comarea here */
proxy_create_comarea(pconf);
+
+ /* Also fill the comarea of the health-checker */
+ proxy_checkstorage_add_workers(pconf, s);
return OK;
}
Modified: httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.h?rev=426837&r1=426836&r2=426837&view=diff
==============================================================================
--- httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.h (original)
+++ httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/mod_proxy.h Sat Jul 29 14:08:00 2006
@@ -446,8 +446,8 @@
/* proxy_util.c */
-PROXY_DECLARE(void) proxy_checkstorage_add_entry(proxy_worker *worker, const char *balancer_name);
PROXY_DECLARE(void) proxy_create_comarea(apr_pool_t *pconf);
+PROXY_DECLARE(void) proxy_checkstorage_add_workers(apr_pool_t *pconf, server_rec *s);
PROXY_DECLARE(void) proxy_lookup_storage_provider();
PROXY_DECLARE(request_rec *)ap_proxy_make_fake_req(conn_rec *c, request_rec *r);
Modified: httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/proxy_util.c?rev=426837&r1=426836&r2=426837&view=diff
==============================================================================
--- httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/branches/httpd-proxy-scoreboard/modules/proxy/proxy_util.c Sat Jul 29 14:08:00 2006
@@ -2250,10 +2250,47 @@
checkstorage = ap_lookup_provider(PROXY_CKMETHOD, "default", "0");
}
-/* Store the worker information in the comarea */
-PROXY_DECLARE(void) proxy_checkstorage_add_entry(proxy_worker *worker, const char *balancer_name)
+/* Copy all the worker information in the comarea */
+PROXY_DECLARE(void) proxy_checkstorage_add_workers(apr_pool_t *pconf, server_rec *s)
{
if (checkstorage) {
- checkstorage->add_entry(worker, balancer_name, worker->id);
+ while (s) {
+ void *sconf = s->module_config;
+ proxy_server_conf *conf;
+ proxy_worker *worker;
+ proxy_balancer *balancer;
+ int i, j, k;
+
+ conf = (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module);
+ worker = (proxy_worker *) conf->workers->elts;
+ for (i = 0; i < conf->workers->nelts; i++) {
+ const char *name = NULL;
+ /* find the balancer if any */
+ balancer = (proxy_balancer *)conf->balancers->elts;
+ for (j = 0; j< conf->balancers->nelts; j++) {
+ proxy_worker *myworker = (proxy_worker *)balancer->workers->elts;
+ for (k = 0; k < balancer->workers->nelts; k++) {
+ if (myworker->id == worker->id) {
+ name = balancer->name;
+ break;
+ }
+ myworker++;
+ }
+ if (name)
+ break;
+ }
+
+ if (!name) {
+ /* No balancer */
+ name = "None";
+ }
+ checkstorage->add_entry(worker, name, worker->id);
+ worker++;
+ }
+
+ /* XXX: Do we need something for reverse and forward */
+
+ s = s->next;
+ }
}
}