-*- coding: utf-8 -*-
Changes with Apache 2.5.0
+ *) mod_proxy: loadfactor parameter can now be a decimal number (eg: 1.25).
+ [Jim Jagielski]
+
*) mod_ssl: add SSLPolicy (define/use) and SSLProxyPolicy directives plus documentation. Add
core definitions for policies 'modern', 'intermediate' and 'old', as defined by Mozilla
in <https://wiki.mozilla.org/Security/Server_Side_TLS>. [Stefan Eissing]
directive and can take any of the key value pair parameters available to
<directive module="mod_proxy">ProxyPass</directive> directives.</p>
<p>One additional parameter is available only to <directive>BalancerMember</directive> directives:
- <var>loadfactor</var>. This is the member load factor - a number between 1
- (default) and 100, which defines the weighted load to be applied to the
+ <var>loadfactor</var>. This is the member load factor - a floating pount number between 1.0
+ (default) and 100.0, which defines the weighted load to be applied to the
member in question.</p>
<p>The <var>balancerurl</var> is only needed when not within a
<code><Proxy <var>balancer://</var>...></code>
ProxyPass "/" "balancer://hotcluster/"
<Proxy balancer://hotcluster>
BalancerMember ajp://1.2.3.4:8009 loadfactor=1
- BalancerMember ajp://1.2.3.5:8009 loadfactor=2
+ BalancerMember ajp://1.2.3.5:8009 loadfactor=2.5
# The server below is on hot standby
BalancerMember ajp://1.2.3.6:8009 status=+H
ProxySet lbmethod=bytraffic
-top_srcdir = /Users/sei/projects/httpd/trunk
-top_builddir = /Users/sei/projects/httpd/trunk
-srcdir = /Users/sei/projects/httpd/trunk/modules/md
-builddir = /Users/sei/projects/httpd/trunk/modules/md
-VPATH = /Users/sei/projects/httpd/trunk/modules/md
+top_srcdir = /Users/jim/src/asf/code/dev/httpd-git-trunk
+top_builddir = /Users/jim/src/asf/code/dev/httpd-git-trunk
+srcdir = /Users/jim/src/asf/code/dev/httpd-git-trunk/modules/md
+builddir = /Users/jim/src/asf/code/dev/httpd-git-trunk/modules/md
+VPATH = /Users/jim/src/asf/code/dev/httpd-git-trunk/modules/md
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
/* Normalized load factor. Used with BalancerMember,
* it is a number between 1 and 100.
*/
- ival = atoi(val);
+ double fval = atof(val);
+ ival = fval * 100.0;
if (ival < 1 || ival > 100)
return "LoadFactor must be a number between 1..100";
worker->s->lbfactor = ival;
ap_rvputs(r, ap_proxy_parse_wstatus(r->pool, *worker), NULL);
ap_rvputs(r, "</td><td>", (*worker)->s->route, NULL);
ap_rvputs(r, "</td><td>", (*worker)->s->redirect, NULL);
- ap_rprintf(r, "</td><td>%d</td>", (*worker)->s->lbfactor);
+ ap_rprintf(r, "</td><td>%f.2</td>", (float)((*worker)->s->lbfactor)/100.0);
ap_rprintf(r, "<td>%d</td>", (*worker)->s->lbset);
ap_rprintf(r, "<td>%" APR_SIZE_T_FMT "</td><td>",
(*worker)->s->elected);
/* Recalculate lbfactors */
workers = (proxy_worker **)balancer->workers->elts;
/* Special case if there is only one worker its
- * load factor will always be 1
+ * load factor will always be 100
*/
if (balancer->workers->nelts == 1) {
- (*workers)->s->lbstatus = (*workers)->s->lbfactor = 1;
+ (*workers)->s->lbstatus = (*workers)->s->lbfactor = 100;
return;
}
for (i = 0; i < balancer->workers->nelts; i++) {
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01192) "settings worker params");
if ((val = apr_table_get(params, "w_lf"))) {
- int ival = atoi(val);
+ int ival;
+ double fval = atof(val);
+ ival = fval * 100.0;
if (ival >= 1 && ival <= 100) {
wsel->s->lbfactor = ival;
if (bsel)
"</httpd:scheme>\n", NULL);
ap_rvputs(r, " <httpd:hostname>", worker->s->hostname,
"</httpd:hostname>\n", NULL);
- ap_rprintf(r, " <httpd:loadfactor>%d</httpd:loadfactor>\n",
- worker->s->lbfactor);
+ ap_rprintf(r, " <httpd:loadfactor>%f.2</httpd:loadfactor>\n",
+ (float)(worker->s->lbfactor)/100.0);
ap_rprintf(r,
" <httpd:port>%d</httpd:port>\n",
worker->s->port);
" <httpd:lbstatus>%d</httpd:lbstatus>\n",
worker->s->lbstatus);
ap_rprintf(r,
- " <httpd:loadfactor>%d</httpd:loadfactor>\n",
- worker->s->lbfactor);
+ " <httpd:loadfactor>%f.2</httpd:loadfactor>\n",
+ (float)(worker->s->lbfactor)/100.0);
ap_rprintf(r,
" <httpd:transferred>%" APR_OFF_T_FMT "</httpd:transferred>\n",
worker->s->transferred);
NULL);
ap_rvputs(r, "</td><td>",
ap_escape_html(r->pool, worker->s->redirect), NULL);
- ap_rprintf(r, "</td><td>%d</td>", worker->s->lbfactor);
+ ap_rprintf(r, "</td><td>%f.2</td>", (float)(worker->s->lbfactor)/100.0);
ap_rprintf(r, "<td>%d</td><td>", worker->s->lbset);
ap_rvputs(r, ap_proxy_parse_wstatus(r->pool, worker), NULL);
ap_rputs("</td>", r);
ap_rputs("<form method='POST' enctype='application/x-www-form-urlencoded' action='", r);
ap_rvputs(r, ap_escape_uri(r->pool, action), "'>\n", NULL);
ap_rputs("<table><tr><td>Load factor:</td><td><input name='w_lf' id='w_lf' type=text ", r);
- ap_rprintf(r, "value='%d'></td></tr>\n", wsel->s->lbfactor);
+ ap_rprintf(r, "value='%f.2'></td></tr>\n", (float)(wsel->s->lbfactor)/100.0);
ap_rputs("<tr><td>LB Set:</td><td><input name='w_ls' id='w_ls' type=text ", r);
ap_rprintf(r, "value='%d'></td></tr>\n", wsel->s->lbset);
ap_rputs("<tr><td>Route:</td><td><input name='w_wr' id='w_wr' type=text ", r);
wshared->flush_packets = flush_off;
wshared->flush_wait = PROXY_FLUSH_WAIT;
wshared->is_address_reusable = 1;
- wshared->lbfactor = 1;
+ wshared->lbfactor = 100;
wshared->passes = 1;
wshared->fails = 1;
wshared->interval = apr_time_from_sec(HCHECK_WATHCHDOG_DEFAULT_INTERVAL);