Full ChangeLog for mod_backhand
mod_backhand changes from epoch to 0.5
  • Bothered setting up this change log file.
  • Now supports Linux platform.
  • Backhand -- directive (directory) added.
  • backhand-handler -- handler added.
  • Implements HTTP redirection to other servers in the clutser
  • Implements shared memory space (like scoreboard) for cluster resources.
  • Implements client/server communication via AF_UNIX sockets. This will be the means of handing open file descriptors when implemented.
mod_backhand changes from 0.5 to 0.6
  • BrodcastStats broadcastaddr:port -- directive added
  • Handling loop was debugged for cleaner release of file handles.
  • UnixSocketDir [directory] was added so the AF_UNIX sockets could be placed as an administrator sees fit.
  • AcceptStats inetaddr[/mask] -- directive added. Can be cascaded, these only allow statistics to be accepted from trusted sources.
mod_backhand changes from 0.6 to 0.7
  • BroadcastStats inetaddr broadcastaddr:port -- directive changed This will allow httpd to be run as a normal user ID. Before it needed priveldges to determine interface routing selections for outgoing broadcasts to determine an advertised IP address. Now it is specified by the config file.
  • Made changes necessary to support multiple "BroadcastStats" directives for multiple networks, private networks and upcoming IP Multicast support.
mod_backhand changes from 0.7 to 0.8
  • BroadcastStats inetaddr (broadcastaddr:port | multicastaddr:port,ttl) -- directive augmented to support IP multicast as medium for resource information distribution.
  • Fixed nasty bug in the proxying loop that munged persistent (pipelined) HTTP requests. Bug could also cause seg faults (exploits) for certain length requests.
mod_backhand changes from 0.8 to 0.9
  • Rewrote the connection proxying code. It now handles persistent connections better and survives broken redirection sockets.
  • We actually parse the incoming header and the response header now, to allow better error handling and future intentional header munging.
  • Changed the Backhand directive to specify a function from builtin.c and an optional argument. The functions so far are byLoad and byCPU.
  • Added a BackhandFromSO directive to allow user functions to be written easily. One is provided as byHostname.c and returns the first host that matches the regex. Directive is BackhandFromSO libexec/byHostame.so byHostname hostname.
  • Implemented byAge and byRandom builtin candidacy functions.
  • Changed the inputs to builtin and user-defined decision making functions. It is now (request_rec *, int *, int *, char *) -- see builtin.h header for details. This provides a mechinsims for specifying a set of candidates instead of a single server.
  • Implmeneted Cascadable Backhand(FromSO) directives. Now users can implement more likeable resrictions: byAge, byLoad, byRandom. This would prune old servers, find the least loaded and choose randomly among them. (each directive is on its own line).
mod_backhand changes from 0.9 to 1.0
  • LICENSE revised to be open-source. (Modelled after the BSD license)
  • Fixed a bug in the handling or requests that have Content-length headers.
  • Implemented byLogWindow candidacy functions.
  • Change the byLoad candidacy function to be by load/#CPUs instead of just by load.
  • Added "balanced by mod_backhand/VERSION string to the Apache server string.
  • Separated the operating systems specifics out of mod_backhand.c and back_util.c.
  • Changed the BroadcastStats directive to MulticastStats.
  • Now supports Solaris platform.
mod_backhand changes from 1.0 to 1.0.1
  • Fixed the writing of log notices to go to the logfile instead of stdout when starting Apache.
  • Works with Apache 1.3.9 better.
  • Moved the exploration, decisions and uri rewriting to the mime/types stage from the access stage. Other modules were "un"making our decisions.
  • Moved AddModule mod_backhand.c down below mod_cgi. This allows mod_backhand to redirect things in Location statements with cgi-script handlers (or perl handlers)
mod_backhand changes from 1.0.1 to 1.0.2
  • Made small modifications to allow compilation under Sun Workshop C/C++ compiler (asmo.porma at saunalahti dot fi)
mod_backhand changes from 1.0.2 to 1.0.5
  • Added a new candidacy function byCost that is still in the experimental phase. It implements a decision making algortihm based on the cost-benefit framework developed and discussed in the following paper by Amir, Awerbuch, and Borgstrom: http://www.cnds.jhu.edu/pub/papers/dss99.ps
  • Now supports BSDI platform.
  • Now supports (Net|Free|Open)BSD platform.
mod_backhand changes from 1.0.5 to 1.0.7
  • Changed parameter passing architecture for statistics daemon spawning to correct problems on systems where sizeof(int)!=sizeof(void *).
  • Updated arriba function to eliminate floating point errors on alpha.
  • Fixed serious request proxying bug that caused "chunked" transfer encoded responses to fail. Chunked encoding is a HTTP/1.1 defined transfer encoding supported by Apache. This should fix any noticed incompatibilities with Microsoft's IE.
  • Now supports Linux (alpha fix) platform.
mod_backhand changes from 1.0.7 to 1.0.8
  • Include file fixes for FreeBSD (Now better supports FreeBSD platform).
  • Updated cost calculations to accurately account for the power of machines.
  • Added an optional argument to the byLoad candidacy function. It now takes a floating point number (0.0 if not provided) that subtracts from the local load when sorting. This provides a convenient mechanism for local bias.
  • Added a new candidacy function addPredition that will add a predictive load to the first candidate (if addPrediction is last, this is the server you choose). So, when assigning a request, you can add a predicted incurred load to that server. See documentation for suggested use.
mod_backhand changes from 1.0.8 to 1.0.9
  • Fixed uninitialized variable causing occasional core dumps.
  • fix for gcc -funsigned-char (Dmitry Khrustalev )
  • Fixed type in addPrediction
  • Added configure, configure.in, config.h.in, and Makefile.in allowing simple
mod_backhand changes from 1.0.9 to 1.1.0
  • Fixed uninitialized variable bug in back_util.c. The effects were that trash values could be found in the server port of the advertised service. This caused different mod_backhand instances to fail when proxying. I could not reproduce this on my Linux machine. Many thanks to Sean Chittenden for the time on his BSD boxes to debug the problem.
  • Fixed logic error when calculating byLoad with a bias. It did not calculate biases as the FAQ implied. Thanks to Blake Mills.
  • Changed the byAge candidacy function to never eliminate oneself. Under high loads, the daemon process was often scheduled so infrequently that the local server expired, rendering BackhandSelfRedirect On ineffective.
  • Changed two accidental snprintf's to ap_snprintf's for portability.
mod_backhand changes from 1.1.0 to 1.2.0
  • Fixed issue appending GET style query parameters on HTTP redirected URLs -- patch submitted by Jürgen Brunk .
  • Fixed RFC compliance issue with HTTP response codes that are 304, 204, and less that 200. They are explicitly defined to have no content length.
  • Some header clean up when fetching proxying documents.
  • No longer recalculate the arriba if there is a backhand-arriba file available. This should speed things up tremendously and was blatantly unnecessary.
  • Before the parent Apache process forks children, it now waits to assure that the mod_backhand moderator process is bound and accepting on the unix domain socket required for MBCS.
  • Added a notes file to detail issues with different platforms. Started it off with a Solaris patch requirement. Insight and debugging courtesy of Kevin Walters.
  • Better logging and error handling in a few places -- still no docs :-(
  • Added code to setgid() the moderator processes. Before, we only setuid(). -- original patch from Stephan Seyboth
  • Added addSelf as a candidacy function. (adds the local machine if it is not already on the list)
  • Added removeSelf as a candidacy function. (removes the local machine if it is on the list)
  • Added off as a candidacy function. (just removes all servers as candidates) This is required to turn of mod_backhand in directories that are below enabled directories in the heirarchy.
  • Added bySessions [identifier] to redirect established sessions to the same machine every time. Read README.bySession for more details. This was contributed by Martin Domig
  • Moved all builtin candidacy function code into builtins.[ch] so that the addition of new builtin candidacy functions only requires modifications of those two files.
  • Added a "logger" callback to clean up the r->connection->remote_addr that we intentionally munged if the connection was proxied. Without this the remote address was not correct for subsequent HTTP requests over the same connection (KeepAlives.) This fixes the bug that causes $REMOTE_ADDR to be wrong sometimes.
  • Now supports FreeBSD-4.x platform.
  • Removed BackhandProxied: from the headers_in on the proxying machine. This allows SetEnvIf BackhandProxied to work write even when BackhandSelfRedirect is enabled.
  • No longer remove Content-Length headers from Connection: close responses. This makes users' progress bars work correctly.
  • Clients speaking HTTP/1.1 were not getting Keep-Alives turned on under certain circumstances. This has been fixed -- I think.
  • Headers in multiplicity were reduced to a single headers. This breaks some apps that use multiple Set-Cookie headers. This has been fixed.
  • Fixed bug in moderator restart when mod_backhand is statically compiled into Apache.
  • Fixed double printing of mod_backhand settings to error_log on startup.
  • Change the autoconf configuration to automatically add -lm and -lkstat is necessary.
  • Added the byBusyChildren candidacy function.
  • Fixed a bug that caused expired sessions in the pool to cause POSTs to hang.
  • Fixed compilation error on OpenBSD.
  • Now support Darwin/Mac OS X platform -- Marquis Logan
  • Fixed AF_UNIX problem on *BSD. Pathnam (.sun_path) was not null terminated correctly.
  • Added tight timeouts around the MBCS code to protect the child. Hanging indefinitely will not happen now.
  • precompile now runs configure before installing itself in the apache source tree. Without this, config.h didn't exist.
  • precompile now augments Apache's configure to force mod_so on if backhand is enabled.
  • Added BackhandModeratorPIDFile configuration directive. If specified, it will write the new moderator PID in this file.
mod_backhand changes from 1.2.0 to 1.2.1
  • Fixed brown-paper-bag problem with byBusyChildren. It was internally calling byLoad. (even worse, it wasn't tagged into this release, see next release)
  • Added "BackhandConnectionPools (on|off)" to allow the Apache child to do a keepalive-disabled connect instead of the moderator maintaining everything.
  • Added compile fix under Sun C Compuler 6.1 from luc at ispi dot net
  • Added correct 100 support -- Stefan Seufert .
  • Removed ap_is_initial_req to allow correct operation with modules like mod_gzip -- Stefan Seufert .
  • Changed serverstats to allow multiple entries with the same IP but different ports -- Mike Cramer .
  • Changed the serverstring to drop "balanced_by".
  • Integrated parts of Michael Cramer's cosmetic changes to the /backhand/ page.
  • Added Rob's NT Backhand Broadcaster.
  • Now supports Windows NT through ntbhb (see related links) platform
  • Fix for uninitialized variable causing duplicate resource announcements --
  • Fix ownership of backhand dir during install with precompile -- Yusuf Goolamabbas
mod_backhand changes from 1.2.1 to 1.2.2
  • Fixed brown-paper-bag problem with byBusyChildren. It was internally calling byLoad. :-(
  • Add diagnostics for erroneous MulticastStats entries -- Ben Laurie
  • Setting no MulticastStats is fatal -- Ben Laurie
  • Mac OS X resource acquisition fix -- Marquis Logan
  • Use apache notes to prevent infinite recursion in the event that failure causes local handling and local handling is backhand_redirection.
  • Allow the first argument in the two argument MulticastStats form to be a hostname (rather than IP).
  • Various CRLF fixes from Kevin Walters.
mod_backhand changes from 1.2.2 to development
  • Update the hostname redirection to allow redirects all the time.

Copyright © 1999 Theo Schlossnagle. All rights reserved.