Perlbal

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

       verification methods possible.

    -- Add BackendHTTP method 'verify_success' and adjust code to follow
       this. Intended for use with the above hooks.

    -- Add a 'scratch' field to BackendHTTP objects so plugins can store
       per-backend scratch data.

1.70: 2008-03-08

    -- SECURITY: patch from Jeremey James <jbj@forbidden.co.uk> to not crash
       on zero byte chunked upload when buffered uploads are enabled.

    -- on successful write, update Perlbal::Socket's alive_time, so slowly
       reproxied writes don't timeout the connection and kill it.  Patch
       from Jonty <jonty@last.fm>.  r765

    -- Perl 5.10 support.  Patch from Andy Armstrong <andy@hexten.net>.
       Disclaimer: at least the tests all pass now, but no real-world use yet.
       Should be fine, though.  Please report your success to the mailing list
       and/or brad@danga.com.

    -- Add Include plugin by Eamon Daly <edaly@nextwavemedia.com>; plugin
       allows you to use "INCLUDE = /etc/conf.d/*" or "INCLUDE = /foo.conf"
       to bring in more config; can be nested.

    -- SECURITY: Previously a single upward directory traversal was possible
       when concat get was enabled. This behavior has been fixed in code to
       match with standard file serving.

    -- Fix 'No such pseudo-hash field "high_priority"' issue in Stats plugin
       (Eamon Daly and Jonty Wareing)

    -- Support for "anonymous services", for API callers that really don't
       care what their service is called but just want to get hold of a
       Service object. These aren't really anonymous, but they have suitably
       ugly names that no sane human should ever conflict with them.

    -- add some new methods that make it a little nicer to embed Perlbal
       in another application that uses Danga::Socket. Some refactoring
       was done to avoid duplicate code between the "end-user" way and the
       API way.

    -- Chained selectors.  from Jeremy James <jbj@forbidden.co.uk>.

    -- add "cgilike" plugin which offers a simple API very loosely based on
       mod_perl for handling responses

    -- add HTTPHeaders method set_request_uri so plugins can modify the uri
       being requested

    -- access control test

    -- add option to AccessControl plugin to use observed_ip_string instead

    -- add observed_ip_string method to perlbal sockets, allowing http
       connections to set an observed ip string when an upstream proxy is
       trusted.

    -- add blind_proxy option, which disables appending to the end of the
       X-Forwarded-For header when connections arrive from a trusted proxy.

    -- make socket closing more verbose when Perlbal::DEBUG is set

    -- verify_backend_path configuration option

    -- don't overwrite $^P, allows use of perl debugger on perlbal.

1.60: 2007-10-23

    -- accept LFLF to end HTTP request headers, instead of just
       CRLFCRLF.  easier monitoring with netcat & other popular
       webservers accept LFLF anyway.  (Paul Baker)

    -- SHUTDOWN GRACEFUL [timeout] - now accepts optional timeout
       parameter to force shutdown after that period in seconds

    -- make SSL non-blocking

    -- make persist_client_timeout service tunable apply to the max_idle_time
       value used to kill sockets that are idle

    -- add Vpath plugin for selectors; can select on URI regex now

    -- add ability to set default_service on selector services; any
       request that is not caught by a selector plugin instead gets
       routed to the defined default service

    -- add MIME [ LIST | REMOVE <ext> | SET <ext> <mime> ] command for
       managing the internal list of mime-types

    -- return an error when trying to use HEADER command on a
       service that isn't of role reverse_proxy

    -- add hook to attach when a service selector is getting a client
       returned to it.

    -- fixed huge memory leak in Stats plugin

    -- Fix t/15-webserver.t to not fail once in a while (timing glitch)

    -- Fix handling of a proxy response that doesn't have a Reason-Phrase
       on the HTTP status line.

    -- Update 'queues' management command to output information about low
       priority queue, now that we use it.

    -- the buffered upload rate test should pass more reliably now.  some
       people reported it sporadically (or often) failing before

    -- new per-service configuration value: persist_client_timeout -
       timeout in seconds for HTTP keep-alives to the end user
       (defaults to 30 seconds)

    -- new server configuration value: pidfile - for managing an internal
       pidfile.

1.59: 2007-05-22

    -- only call die_gracefully on a socket if it CAN die_graceully.  fixes
       shutdown graceful on mogstored, which has things betsides subclasses
       of Perlbal::Socket in its Danga::Socket event loop

    -- WARNING:  removed Linux::AIO support.  go get IO::AIO 1.6 at least if
       you use webserver mode or reproxy files or do buffered uploads.

1.58: 2007-05-11

    -- plugin reload support, if plugin supports it.  plugin must implement
           sub can_reload { 1 }
       and optionally:
           sub pre_reload_unload { ... }
       (which is called before the ->unload, module reload, and ->load)
       new management command is:
           reload <plugin_name>

1.57: 2007-04-26

    -- make ClientHTTP (webserver mode) support transfer-encoding
       "chunked" PUTs, when PUTs are already enabled.  useful
       for things like MogileFS, where writing clients may not
       know the final length ahead of time to predeclare in the
       Content-Length request header.

    -- Add the client_ip to the X-Forwarded-For header when the
       upstream is "trusted" (Ask Bjoern Hansen).

1.56: 2007-04-16

    -- make HTML proper in ClientManage interface Jacques Marneweck
       <jacques@powertrip.co.za>

    -- fix "make test" on OS X.  Radu Greab <radu@yx.ro> and
       Chuck Remes <cremes.devlist@mac.com> fixed & confirmed.

    -- let accesscontrol plugin have a new match action, "queue_low",
       to make a match force a request onto the low-priotity queue.
       this match action is in addition to the two previous ones
       (allow and deny).

    -- start of work on making BackendHTTPs be abstract, dispatching
       to a child process over a socketpair which speaks HTTP on
       stdin/stdout.  Unfinished.  To be polished in future.

    -- new hook "make_low_priority", like "make_high_priority"

1.55: 2007-03-21

    -- add plugin that returns 304 automatically on incoming requests
       with If-Modified-Since header and matching a regular expression
       on the Host header. (for hostnames serving immutable resources,
       where if client has ANY version, it's the correct one.)  see:
       example conf at conf/not-modified-plugin.conf

    -- do HEAD to reproxied hosts, if client did a HEAD (Radu Greab
       <radu@yx.ro>)

    -- fix race+crash in buffered upload writing/purging

1.54: 2007-02-05

    -- supported for "Transfer-Encoding: chunked" requests (HTTP/1.1 feature)
       as well as the "Expect: 100-continue", which generally accompany
       chunked requests.  requires "buffered_uploads" be enabled.  see
       doc/http-versions.txt for details.

1.53: 2006-12-05

    -- fix a crash as reported on mailing lists, with backends not
       releasing references to clientproxies when coming through
       service selectors, and backends then timing out, crashing
       the server.

    -- if backend sends x-reproxy-url and HTTP 204 No Content, upgrade
       that to a 200 when sending to the client.

    -- let non-Perlbal::Socket Danga::Socket objects exist without
       crashing in cleanup handler (allows use of Gearman::Client::Async
       in plugins)

1.52: 2006-11-13

    -- fix crash in buffered uploads when *::AIO doesn't write everything
       to disk that's requested of it.  we were unshifting back onto the
       write queue a scalar, not a scalarref.

CHANGES  view on Meta::CPAN

       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



( run in 0.703 second using v1.01-cache-2.11-cpan-99c4e6809bf )