196 lines
8.8 KiB
Plaintext
196 lines
8.8 KiB
Plaintext
|
-- byte range support for both webserver mode and reproxy-file mode
|
||
|
Giao Phan <giao@guba.com>. so clients can resume large transfers.
|
||
|
|
||
|
-- test suite
|
||
|
|
||
|
-- IO::AIO support (brad)
|
||
|
|
||
|
-- change response code to client to 200 on reproxy-file from backend
|
||
|
|
||
|
-- 'nodes' command now takes as an optional argument a specific ip:port to
|
||
|
dump the node stats for
|
||
|
|
||
|
-- AIO abstraction layer (Perlbal::AIO) which can currently do either
|
||
|
Linux::AIO or "none" (doing everything sync). also in future File::FDpasser
|
||
|
and other OS-specific modes [brad]
|
||
|
|
||
|
-- add buffer_backend_connect to do in memory buffering of data before we
|
||
|
request a backend; assists slow clients without tying up a mod_perl
|
||
|
|
||
|
-- fix spinning issue when webnodes unavailable; should now not consume 100%
|
||
|
CPU in those cases
|
||
|
|
||
|
-- revamp verbose functionality; by default it's still of, but if you specify
|
||
|
VERBOSE ON in the config file, it turns it on for management connections
|
||
|
by default. management connections, when specifying VERBOSE ON/OFF, will
|
||
|
now set the flag only for that connection.
|
||
|
|
||
|
-- new command for config file; VERBOSE ON/OFF; can be used to enable or
|
||
|
disable confirmation of all commands such as SET, SERVER, CREATE, etc.
|
||
|
by default, it's off for config files, but on for management connections.
|
||
|
|
||
|
-- add generation count to services that increments every time a pool is
|
||
|
switched. this data is now stored on backends when they're spawned as
|
||
|
well, and when we allocate a backend we verify the generation so old ones
|
||
|
are thrown away.
|
||
|
|
||
|
-- allow setting of nodefile on pools to 'none' or 'null' or 'undef' or just
|
||
|
an empty set of quotes ("", '') in order to stop using node files
|
||
|
|
||
|
-- automatically set use count to 0 on new nodes coming in from nodefile
|
||
|
|
||
|
-- made auto-vivification of pulls throw warnings, and made Perlbal die if it
|
||
|
tries to vivify a pool and the user has previously manually declared a pool
|
||
|
|
||
|
-- updated pool commands to be more flexible (POOL pool ADD node, etc)
|
||
|
|
||
|
-- add pools; a way of having different sets of nodes and instantly switching
|
||
|
between them, so traffic stops going to old nodes; see the example config
|
||
|
file for usage
|
||
|
|
||
|
-- work partially without Linux::AIO (does sync stat of node file in reverse
|
||
|
proxy mode, and webserver mode doesn't work) --brad
|
||
|
|
||
|
1.2 (2005-03-07)
|
||
|
-- add new stats command 'nodes' that shows information on each node that we've
|
||
|
been connecting to -- last connect time, last attempt time, a breakdown of
|
||
|
the last 500 status codes returned, etc
|
||
|
|
||
|
-- add ability to use new Danga::Socket profiling; 'profile on', 'profile data'
|
||
|
to see the info so far, and 'profile off' to disable it
|
||
|
|
||
|
-- graceful shutdown now flags sockets that are busy to die so they die when
|
||
|
they're done with their current connection
|
||
|
|
||
|
-- sockets in persist_wait now get closed immediately during a graceful shutdown
|
||
|
|
||
|
-- fix handling of OPTIONS responses; used to do its own state clearing but
|
||
|
it now uses the next_request method as it should
|
||
|
|
||
|
-- fix bug with determination of keep-alive in http 1.1 case specifying
|
||
|
a connection: close header
|
||
|
|
||
|
-- added 'uptime' management command to track how long Perlbal has been up
|
||
|
|
||
|
-- new config commands: HEADER INSERT <svc> <header>: <value> and HEADER
|
||
|
REMOVE <svc> <header> which will insert and remove headers from user
|
||
|
requests before they're sent to backend proxy nodes.
|
||
|
|
||
|
-- add dependency to Net::Netmask; now you can specify trusted_upstream_proxies
|
||
|
on a service (SET service.trusted_upstream_proxies = 10.0.0.0/8, etc)
|
||
|
which will allow requests from that range to set X-Forwarded-For, X-Host,
|
||
|
and X-Forwarded-Host headers.
|
||
|
|
||
|
-- fixed a bug that caused connections to hang when the backend responded
|
||
|
before the user was done sending data
|
||
|
|
||
|
-- reset some variables that weren't being reset: read_buf, read_ahead, read_size
|
||
|
|
||
|
-- "proc" management command shows user and system CPU usage for Perlbal
|
||
|
this run, as well as a delta since the last time you ran "proc"
|
||
|
|
||
|
-- added Perlbal::XS interface for modules to use; also 'xs' management
|
||
|
command to see the status of XS modules
|
||
|
|
||
|
-- bug in PalImg caused crash on files with no length (or when another
|
||
|
error occurs that causes no data to be sent to new_gif_palette function)
|
||
|
|
||
|
-- ReproxyManager would sometimes let closed backends back into the pool
|
||
|
and hand them off to clients, fixed to check for that
|
||
|
|
||
|
-- new policy: you don't muck around with the internals of other classes.
|
||
|
notably, clients don't change the internals of a backend and backends
|
||
|
don't change the internals of a client. this was causing all sorts of
|
||
|
problems because nobody was cleaning up properly. (especially with regard
|
||
|
to "who is my backend's client" type questions.)
|
||
|
|
||
|
-- fixed up code that did its own keep-alive checks to use the HTTPHeaders
|
||
|
functions so that in the future every part of the code stays up to date
|
||
|
|
||
|
-- Perlbal::Socket now has the option to keep track of all objects that
|
||
|
are created. new command to management interface 'leaks' will show
|
||
|
all objects currently in memory. turn this functionality on by enabling
|
||
|
the TRACK_OBJECTS constant in Perlbal::Socket.
|
||
|
|
||
|
-- split keep-alive logic into request and response methods and cleared
|
||
|
up how that works
|
||
|
|
||
|
-- rewrote reproxy URI support. new class Perlbal::ReproxyManager does all
|
||
|
of the work relating to reproxies. it's basically a service class but
|
||
|
stripped down and dealing with single endpoints instead of pools. much
|
||
|
much much more robust under heavy load. (Junior, Brad)
|
||
|
|
||
|
-- now that we support persistent connections, the 'queues' command didn't
|
||
|
have an accurate time; added ClientProxy member last_request_time so
|
||
|
we can accurately tell how long requests have been waiting for
|
||
|
|
||
|
-- Danga::Socket got an overhaul; close and steal_socket now share a lot
|
||
|
of code by calling _cleanup. some more paranoia on making sure the
|
||
|
object isn't already closed when we try to do things.
|
||
|
|
||
|
-- lots more paranoia in close events and event_err handling for backends
|
||
|
|
||
|
-- added tracking mode for helping look for leaked objects; records a
|
||
|
backtrace of every object created. "server track_obj = 0/1" to enable
|
||
|
or disable it, and then "tracking" in a management interface to see.
|
||
|
|
||
|
-- made Perlbal::objctor/objdtor take an object as their first parameter.
|
||
|
much faster than using caller().
|
||
|
|
||
|
-- fix Highpri plugin to not check hosts for high priority values when
|
||
|
the host isn't defined
|
||
|
|
||
|
-- made Palimg plugin far more paranoid about errors, and also uses new
|
||
|
ClientHTTPBase scratch area for keeping track of data instead of using
|
||
|
headers (which are generally slower)
|
||
|
|
||
|
-- fixed bug in HTTPHeaders that set_version would inadvertently
|
||
|
run into when used on a header created through new_response
|
||
|
|
||
|
-- ClientProxy class now supports persistence; set persist_client on
|
||
|
the proxy service in order to enable it.
|
||
|
|
||
|
-- Palimg plugin now supports fallback to web server mode if the
|
||
|
requested URI doesn't fit our desired pattern
|
||
|
|
||
|
-- did some cleanup; made a bunch of HTTPHeaders accesses use the
|
||
|
accessor methods instead of referencing into the object's private
|
||
|
store of data
|
||
|
|
||
|
-- fixed a crash caused by calling getsockname/getpeername on sockets
|
||
|
that have been undefined after having been stolen during an internal
|
||
|
redirect to another webserver
|
||
|
|
||
|
-- fixed _simple_response to not return a body if we're serving
|
||
|
to a HEAD request
|
||
|
|
||
|
-- bug fix: don't send Not-Modified responses to requests for dynamic
|
||
|
directory listings. it was messing up persistent connections
|
||
|
since the directory serving code didn't get passed down whether we
|
||
|
were sending a body or not. and not modifies on directories are hard:
|
||
|
modify time isn't altogether useful. (file sizes could change)
|
||
|
|
||
|
this still does not-modifieds on indirect index.html directory
|
||
|
requests, because _serve_request ends up eventually calling
|
||
|
_serve_request on a different URI. (brad)
|
||
|
|
||
|
-- added BSD::Resource as dependency to Makefile.PL (brad)
|
||
|
|
||
|
-- fixed 304 Not Modified responses to not send Content-Length
|
||
|
and Content-Type headers. (jr)
|
||
|
|
||
|
1.01 (2004-10-22)
|
||
|
-- when internally redirecting a URL, perlbal advertises
|
||
|
that it supports persisent HTTP connections now,
|
||
|
and caches those sockets for 5 seconds. (not configurable)
|
||
|
useful under load, otherwise you waste all local ports
|
||
|
on a machine
|
||
|
|
||
|
-- ditch dependence on IO::SendFile. do it ourselves (1 line)
|
||
|
with perl's syscall function
|
||
|
|
||
|
-- add doc/* and conf/* to MANIFEST file
|
||
|
|
||
|
1.00
|
||
|
-- initial packaged release
|