Commit 52ae7726 authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r1805188, r1805190, r1805206, r1808723 from trunk:

loadfactor now decimal

Umm. This is C :)

Fix remaining lint from ms capability for hchecks.

format typo

Reviewed by: jim, humbedooh, ylavic


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1808855 13f79535-47bb-0310-9956-ffa450edef68
parent 04a398e0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ Changes with Apache 2.4.28
     length in a password file.
     [Luca Toscano, Hanno Böck <hanno hboeck de>]

  *) mod_proxy: loadfactor parameter can now be a decimal number (eg: 1.25).
     [Jim Jagielski]

  *) mod_proxy_wstunnel: Allow upgrade to any protocol dynamically.
     PR 61142.

+0 −9
Original line number Diff line number Diff line
@@ -115,15 +115,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

  *) mod_proxy: Loadfactor can now be a decimal number (eg: 1.25)
     trunk patch: http://svn.apache.org/r1805188
                  http://svn.apache.org/r1805190
                  http://svn.apache.org/r1805206 (partial)
                  http://svn.apache.org/r1808723
     2.4.x patch: http://home.apache.org/~jim/patches/httpd-2.4-loadfactor-v2.patch
     +1: jim, humbedooh, ylavic
     ylavic: conflicts on the docs, addressable while backporting I guess.

  *) mod_speling: Don't embed Referer data in link in error page.
     trunk patch: http://svn.apache.org/r1808780
     2.4.x: trunk patch applies
+3 −3
Original line number Diff line number Diff line
@@ -785,8 +785,8 @@ expressions</description>
            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 decimal 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>&lt;Proxy <var>balancer://</var>...&gt;</code>
@@ -1332,7 +1332,7 @@ ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofail
ProxyPass "/" "balancer://hotcluster/"
&lt;Proxy "balancer://hotcluster"&gt;
    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.25
    # The server below is on hot standby
    BalancerMember "ajp://1.2.3.6:8009" status=+H
    ProxySet lbmethod=bytraffic
+3 −2
Original line number Diff line number Diff line
@@ -103,7 +103,8 @@ static const char *set_worker_param(apr_pool_t *p,
        /* 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;
@@ -2685,7 +2686,7 @@ static int proxy_status_hook(request_rec *r, int flags)
                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>%.2f</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);
+12 −10
Original line number Diff line number Diff line
@@ -700,10 +700,10 @@ static void recalc_factors(proxy_balancer *balancer)
    /* 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++) {
@@ -1093,8 +1093,10 @@ static int balancer_handler(request_rec *r)
        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);
            if (ival >= 1 && ival <= 100) {
            int ival;
            double fval = atof(val);
            ival = fval * 100.0;
            if (ival >= 100 && ival <= 10000) {
                wsel->s->lbfactor = ival;
                if (bsel)
                    recalc_factors(bsel);
@@ -1362,8 +1364,8 @@ static int balancer_handler(request_rec *r)
                          "</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>%.2f</httpd:loadfactor>\n",
                          (float)(worker->s->lbfactor)/100.0);
                ap_rprintf(r,
                           "          <httpd:port>%d</httpd:port>\n",
                           worker->s->port);
@@ -1416,8 +1418,8 @@ static int balancer_handler(request_rec *r)
                           "          <httpd:lbstatus>%d</httpd:lbstatus>\n",
                           worker->s->lbstatus);
                ap_rprintf(r,
                           "          <httpd:loadfactor>%d</httpd:loadfactor>\n",
                           worker->s->lbfactor);
                           "          <httpd:loadfactor>%.2f</httpd:loadfactor>\n",
                           (float)(worker->s->lbfactor)/100.0);
                ap_rprintf(r,
                           "          <httpd:transferred>%" APR_OFF_T_FMT "</httpd:transferred>\n",
                           worker->s->transferred);
@@ -1603,7 +1605,7 @@ static int balancer_handler(request_rec *r)
                          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>%.2f</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);
@@ -1638,7 +1640,7 @@ static int balancer_handler(request_rec *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='%.2f'></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);
Loading