196 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
    -- 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
 |