root/trunk/CHANGES @ 613

Revision 613, 20.1 kB (checked in by bradfitz, 3 years ago)

1.53 release

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
11.53: 2006-12-05
2
3    -- fix a crash as reported on mailing lists, with backends not
4       releasing references to clientproxies when coming through
5       service selectors, and backends then timing out, crashing
6       the server.
7
8    -- if backend sends x-reproxy-url and HTTP 204 No Content, upgrade
9       that to a 200 when sending to the client.
10
11    -- let non-Perlbal::Socket Danga::Socket objects exist without
12       crashing in cleanup handler (allows use of Gearman::Client::Async
13       in plugins)
14
151.52: 2006-11-13
16
17    -- fix crash in buffered uploads when *::AIO doesn't write everything
18       to disk that's requested of it.  we were unshifting back onto the
19       write queue a scalar, not a scalarref.
20
21    -- AIO channels.  from the code:
22
23       "prevents all AIO threads from being consumed by requests for same
24        failing/overloaded disk by isolating them into separate 'channels' in
25        parent process and not dispatching more than the max in-flight count
26        allows.  think of a channel as a named queue.  or in reality, a disk."
27
28    -- allow setting of SO_SNDBUF on a per-service level
29
301.51: 2006-10-04
31
32    -- set alive_time during slow PUTs.  was causing problems
33       replicating large files in mogile, hitting fake idle timeout.
34
35    -- pipelining HTTP injection fix.
36
37    -- include Host header to reproxy backends
38           patch by Jonty Wareing <jonty.wareing@gmail.com>
39
401.50: 2006-09-08
41
42    -- add in optional Devel::Gladiator usage for memory tracking
43
44    -- fix memory leaks in concatenanted GETs on error cases
45
46    -- fixes to run / run better on OS X (Artur Bergman)
47
481.49: 2006-08-30
49
50    -- Very basic help hints command, simply dumps all possible commands.
51
52    -- Add another statistic for reproxy caches, the current size of a particular
53       service's cache, maximum size, and fill percentage.
54
551.48: 2006-08-18
56
57    -- optionally cache in-process the results of X-Reproxy-URL reponses
58
591.47: 2006-08-15
60
61    -- concatenanted GETs sent 304 Not Modified w/ content-lengths.  should
62       be without.  fixed.  also including t/17-webserver-concat which forgot
63       to be checked into svn/MANIFEST earlier
64
651.46: 2006-08-10
66
67    -- fix Mart's broken win32 support that broke Unix, part 2:  syslog when
68       daemonized.  TODO: test case should test daemonization mode.
69
701.45: 2006-08-10
71
72    -- fix Mart's broken win32 support that broke Unix.  TODO:  test to raise/check
73       fd limit so this doesn't happen again on unix.
74
751.44: 2006-08-10
76
77    -- allow a no-op ?foo at the end of concatenated-get URLs, so they'd be of
78       the form:  http://host/dir??file1,file2,file3?noopsection.  the no-op
79       section is good for cache-busting, putting in, say, the modtime of the
80       newest file, forcing browsers like safari (who over-cache) to reload.
81
82    -- set a mime-type other than text/plain on concatenated-get requests,
83       only falling back to text/plain if none of files have a known mime type.
84       in practice a request is all css or all js, so match is found by looking
85       at 1st file.  this is required since mozilla won't show CSS if not text/css.
86
87    -- actually be able to start up using 'perlbal' command.  test
88       suite passed before, but moving $VERSION into Perlbal.pm
89       had quitely broke it all.
90
911.43: 2006-08-09
92
93    -- there's a case where offset gets past end of file in static file
94       code, but very rarely.  sendfile handles this w/ an error that
95       we dealt with, but the new readahead code didn't and crashed.
96       working around for now, until root cause is found for offset
97       going past.
98
99    -- eliminate some warnings in error cases.  only really affects noise
100       in test suite
101
102    -- work better on win32
103
104    -- added the ability for plugins to create custom service roles and
105       add custom configuration options to services, demo is available
106       as conf/echoservice.conf and lib/Perlbal/Plugin/EchoService.pm
107
1081.42: 2006-08-03
109
110    -- debug management command 'varsize' to track size of internal
111       data structures, to make sure none get out of control.
112       there's a report that CPU/mem grow slowly over time, and after
113       a month or so of uptime, a restart is needed.  this might help
114       diagnose that.
115
116    -- allow expansion/interoplation of stuff in config files/commands.
117       for now just mapping network device names to IP addresses:
118          SET listen = ${ip:eth0}:80
119
120    -- more hooks as requested by community
121
122    -- concatenated get feature.  where a client have use a
123       comma-separated list of files to return, always in text/plain.
124       Useful for webapps which have dozens/hundreds of tiny css/js
125       files, and don't trust browsers/etc to do pipelining.
126       Decreases overall roundtrip latency a bunch, but requires app
127       to be modified to support it.  See t/17-concat.t test for
128       details.
129
130    -- do AIO readahead before sendfile to reduce blocking caused
131       by disk reads from sendfile.  increases throughput.  see:
132       http://brad.livejournal.com/2228488.html
133
134    -- add 'latency' configuration on selector roles
135
1361.41: 2006-02-06
137
138    -- IE sends a request header like "If-Modified-Since: <DATE>;
139       length=<length>" so we have to remove the length bit before
140       comparing it with our date then we save the length to compare
141       later.
142
143    -- support for reproxying to a named service.  if backend returns
144       "X-Reproxy-Service: <name>" and no content, the entire original
145       client GET/HEAD request is re-sent to the new named service.
146       the "enable_reproxy" option has to be enabled for the original
147       service.
148
1491.40: 2006-01-17
150
151    -- support for optional retrying of requests after a 500 error,
152       so user won't see the 500 error.  boolean option, as well
153       as configurable schedule of how often to retry backends.
154
155    -- clean up directory indexing HTML: Mark Smith and Fred Moyer
156       (fred@redhotpenguin.com)
157
1581.39: (beta for 1.40) 2005-10-26
159
160    -- new feature for virtual host plugin:  the Host header can be trumped
161       by a magical URL form, if allowed in config.  for instance, you can
162       make an HTTP request to host "foo.com" but actually get "bar.com"
163       if you do this:
164
165          VHOST foo.com;using:bar.com  = bar
166
167       and request /__using/bar.com/IDENT from foo.com, where IDENT is
168       just \w+.  perlbal then updates the Host record to bar.com and
169       sends request URI (unaltered) to the "bar" service.
170
171       this is useful for circumventing browser host restrictions (java,
172       javascript, flash, etc...) when you actually control both
173       domains.
174
1751.38: (beta for 1.40) 2005-10-19
176
177    -- some paranoia evals around some parts of buffered uploads that
178       SAPO reported crashes in occasionally.  added FIXMEs to investigate
179       too.  for now, though, evals around closing files is safer.
180
181    -- new feature: inter-perlbal upload tracking.  for fancy upload
182       bars driven by XmlHttpRequest when clients are upload large files
183
184    -- WARNING: reproxying (files or URLs) is now disabled by default,
185       and must be enabled per-service with "enable_reproxy = true"
186
187    -- do a final little read before closing an HTTP connection
188       to make sure we have no unread data in kernel (notably
189       an extra "\r\n" from an IE post), so when we do close, we
190       don't send a RST packet to the end user.  Thanks to Kevin
191       Lewandowski from discogs.com for the bug report.
192
193    -- use Danga::Socket's AddTimer interface to disconnect
194       stale persistent connections every 5 seconds, driven by
195       a timer, rather than every 15 seconds, driven by
196       socket creation.
197
198    -- there was a bug where 304 Not Modified responses would
199       cause a connection close (and thus RST packets) even
200       though keep-alive was negotiated and would've worked
201
202    -- ignore URL arguments when doing directory indexing
203
204    -- work a little better under "trickle".  (but still not perfect...
205       trickle doesn't quite work on Perlbal, unfortunately. it's useful,
206       or would've been useful, for testing some parts...)
207
208    -- avoid an occasional warning with dirindexing on unreadable directories
209
2101.37 (beta for 1.40) 2005-08-29
211
212    -- "use <name>" command to set the direct object for future commands
213
214    -- AccessControl plugin to allow/deny by default or on IPs or
215       netmasks.
216
217    -- ClientManage could spin in its inherited event_write, causing
218       99.9% cpu usage.  Bug is arguably Danga::Socket's, but also
219       ours because it's documented what we should do and we didn't.
220       The fix is to shut down watching writability when we're done
221       writing.
222
223    -- make accept_client and its callers deal with the possibility
224       that accept_client fails not because the backend is bogus, but
225       because the client is.  so now accept_client can close the
226       client and callers have to be aware of that.
227
228    -- after running this version on production on LiveJournal.com for
229       a bit, we discovered some cases that we'd flag as should never happen,
230       but actually do, so updated the comments and behavior to
231       do the right thing and not just crash with an assertion.
232
233    -- fix misspellings of trusted_upstream_proxies that didn't
234       come along for the renaming ride earlier
235
236    -- webserver mode now ignores URL arguments when looking up
237       filename
238
239    -- remove warnings accessing undefs in ranges and vhosts
240
241    -- new --version and --help flags.  also a usage message on bogus
242       options (or when --help).  props to Jacques Marneweck
243       <jacques@powertrip.co.za> for the help and motivation.
244
2451.36 (beta for 1.40) 2005-08-19
246
247    -- fix bug in ClientProxy when user disconnects after POST/PUTing
248       a content body, but before a response comes back.
249
250    -- now checks correctly for Danga::Socket version 1.44 or above.
251       (required version was in quotes, confusing perl.)
252
253    -- vhost plugin: strip off port specification from the Host header
254       before trying to match with configured patterns.
255
2561.35: (beta of 1.40) 2005-08-16
257
258    -- beta SSL support in a few lines of code.  maybe it's completely
259       done.  maybe it's barely done.  But it seems to work?  I'm no
260       SSL master... IO::Socket::SSL just made it so easy.
261
262    -- lots more tests
263
264    -- lots more cleanup
265
266    -- fix potential crashing bugs in the PUT path.  luckily ones we
267       never hit.
268
269    -- lots and lots of code cleanup
270
271    -- load plugins by either the exact case specified, all lowercase,
272       or all lowercase with first letter uppercase.  then remember
273       the case for unloading (which was never implemented?)
274
275    -- reorganize/cleanup code related to stalling the backend due to
276       client's buffer size exceeding one of the two limits.
277       introduce "backend_stalled"
278
279    -- buffer uploads to disk
280
2811.3: (2005-06-26)
282
283    -- introduce CommandContext, so management commands can be less
284       verbose when in config files (service/pool names can be left off
285       when you just created them a couple lines before)
286
287    -- remove sendstats support
288
289    -- exit with 0 vs non-zero when/if Perlbal crashes.  new command
290       "crash" to fake a crash, for testing.
291
292    -- entirely redone management command parsing/dispatching (major
293       code cleanup)
294
295    -- virtual host plugin on service selector framework
296
297    -- service selector framework
298
299    -- make Net::Netmask optional
300
301    -- byte range support for both webserver mode and reproxy-file mode
302       Giao Phan <giao@guba.com>.  so clients can resume large transfers.
303
304    -- test suite
305
306    -- IO::AIO support (brad)
307
308    -- change response code to client to 200 on reproxy-file from backend
309
310    -- 'nodes' command now takes as an optional argument a specific ip:port to
311       dump the node stats for
312
313    -- AIO abstraction layer (Perlbal::AIO) which can currently do either
314       Linux::AIO or "none" (doing everything sync).  also in future File::FDpasser
315       and other OS-specific modes [brad]
316
317    -- add buffer_backend_connect to do in memory buffering of data before we
318       request a backend; assists slow clients without tying up a mod_perl
319
320    -- fix spinning issue when webnodes unavailable; should now not consume 100%
321       CPU in those cases
322
323    -- revamp verbose functionality; by default it's still of, but if you specify
324       VERBOSE ON in the config file, it turns it on for management connections
325       by default.  management connections, when specifying VERBOSE ON/OFF, will
326       now set the flag only for that connection.
327
328    -- new command for config file; VERBOSE ON/OFF; can be used to enable or
329       disable confirmation of all commands such as SET, SERVER, CREATE, etc.
330       by default, it's off for config files, but on for management connections.
331
332    -- add generation count to services that increments every time a pool is
333       switched.  this data is now stored on backends when they're spawned as
334       well, and when we allocate a backend we verify the generation so old ones
335       are thrown away.
336
337    -- allow setting of nodefile on pools to 'none' or 'null' or 'undef' or just
338       an empty set of quotes ("", '') in order to stop using node files
339
340    -- automatically set use count to 0 on new nodes coming in from nodefile
341
342    -- made auto-vivification of pulls throw warnings, and made Perlbal die if it
343       tries to vivify a pool and the user has previously manually declared a pool
344
345    -- updated pool commands to be more flexible (POOL pool ADD node, etc)
346
347    -- add pools; a way of having different sets of nodes and instantly switching
348       between them, so traffic stops going to old nodes; see the example config
349       file for usage
350
351    -- work partially without Linux::AIO (does sync stat of node file in reverse
352       proxy mode, and webserver mode doesn't work) --brad
353
3541.2 (2005-03-07)
355    -- add new stats command 'nodes' that shows information on each node that we've
356       been connecting to -- last connect time, last attempt time, a breakdown of
357       the last 500 status codes returned, etc
358
359    -- add ability to use new Danga::Socket profiling; 'profile on', 'profile data'
360       to see the info so far, and 'profile off' to disable it
361
362    -- graceful shutdown now flags sockets that are busy to die so they die when
363       they're done with their current connection
364
365    -- sockets in persist_wait now get closed immediately during a graceful shutdown
366
367    -- fix handling of OPTIONS responses; used to do its own state clearing but
368       it now uses the next_request method as it should
369
370    -- fix bug with determination of keep-alive in http 1.1 case specifying
371       a connection: close header
372
373    -- added 'uptime' management command to track how long Perlbal has been up
374
375    -- new config commands: HEADER INSERT <svc> <header>: <value> and HEADER
376       REMOVE <svc> <header> which will insert and remove headers from user
377       requests before they're sent to backend proxy nodes.
378
379    -- add dependency to Net::Netmask; now you can specify trusted_upstream_proxies
380       on a service (SET service.trusted_upstream_proxies = 10.0.0.0/8, etc)
381       which will allow requests from that range to set X-Forwarded-For, X-Host,
382       and X-Forwarded-Host headers.
383
384    -- fixed a bug that caused connections to hang when the backend responded
385       before the user was done sending data
386
387    -- reset some variables that weren't being reset: read_buf, read_ahead, read_size
388
389    -- "proc" management command shows user and system CPU usage for Perlbal
390       this run, as well as a delta since the last time you ran "proc"
391
392    -- added Perlbal::XS interface for modules to use; also 'xs' management
393       command to see the status of XS modules
394
395    -- bug in PalImg caused crash on files with no length (or when another
396       error occurs that causes no data to be sent to new_gif_palette function)
397
398    -- ReproxyManager would sometimes let closed backends back into the pool
399       and hand them off to clients, fixed to check for that
400
401    -- new policy: you don't muck around with the internals of other classes.
402       notably, clients don't change the internals of a backend and backends
403       don't change the internals of a client.  this was causing all sorts of
404       problems because nobody was cleaning up properly.  (especially with regard
405       to "who is my backend's client" type questions.)
406
407    -- fixed up code that did its own keep-alive checks to use the HTTPHeaders
408       functions so that in the future every part of the code stays up to date
409
410    -- Perlbal::Socket now has the option to keep track of all objects that
411       are created.  new command to management interface 'leaks' will show
412       all objects currently in memory.  turn this functionality on by enabling
413       the TRACK_OBJECTS constant in Perlbal::Socket.
414
415    -- split keep-alive logic into request and response methods and cleared
416       up how that works
417
418    -- rewrote reproxy URI support.  new class Perlbal::ReproxyManager does all
419       of the work relating to reproxies.  it's basically a service class but
420       stripped down and dealing with single endpoints instead of pools.  much
421       much much more robust under heavy load.  (Junior, Brad)
422
423    -- now that we support persistent connections, the 'queues' command didn't
424       have an accurate time; added ClientProxy member last_request_time so
425       we can accurately tell how long requests have been waiting for
426
427    -- Danga::Socket got an overhaul; close and steal_socket now share a lot
428       of code by calling _cleanup.  some more paranoia on making sure the
429       object isn't already closed when we try to do things.
430
431    -- lots more paranoia in close events and event_err handling for backends
432
433    -- added tracking mode for helping look for leaked objects; records a
434       backtrace of every object created.  "server track_obj = 0/1" to enable
435       or disable it, and then "tracking" in a management interface to see.
436
437    -- made Perlbal::objctor/objdtor take an object as their first parameter.
438       much faster than using caller().
439
440    -- fix Highpri plugin to not check hosts for high priority values when
441       the host isn't defined
442
443    -- made Palimg plugin far more paranoid about errors, and also uses new
444       ClientHTTPBase scratch area for keeping track of data instead of using
445       headers (which are generally slower)
446
447    -- fixed bug in HTTPHeaders that set_version would inadvertently
448       run into when used on a header created through new_response
449
450    -- ClientProxy class now supports persistence; set persist_client on
451       the proxy service in order to enable it.
452
453    -- Palimg plugin now supports fallback to web server mode if the
454       requested URI doesn't fit our desired pattern
455
456    -- did some cleanup; made a bunch of HTTPHeaders accesses use the
457       accessor methods instead of referencing into the object's private
458       store of data
459
460    -- fixed a crash caused by calling getsockname/getpeername on sockets
461       that have been undefined after having been stolen during an internal
462       redirect to another webserver
463
464    -- fixed _simple_response to not return a body if we're serving
465       to a HEAD request
466
467    -- bug fix: don't send Not-Modified responses to requests for dynamic
468       directory listings.  it was messing up persistent connections
469       since the directory serving code didn't get passed down whether we
470       were sending a body or not.  and not modifies on directories are hard:
471       modify time isn't altogether useful.  (file sizes could change)
472
473       this still does not-modifieds on indirect index.html directory
474       requests, because _serve_request ends up eventually calling
475       _serve_request on a different URI.  (brad)
476
477    -- added BSD::Resource as dependency to Makefile.PL (brad)
478
479    -- fixed 304 Not Modified responses to not send Content-Length
480       and Content-Type headers.  (jr)
481
4821.01 (2004-10-22)
483    -- when internally redirecting a URL, perlbal advertises
484       that it supports persisent HTTP connections now,
485       and caches those sockets for 5 seconds.  (not configurable)
486       useful under load, otherwise you waste all local ports
487       on a machine
488
489    -- ditch dependence on IO::SendFile.  do it ourselves (1 line)
490       with perl's syscall function
491
492    -- add doc/* and conf/* to MANIFEST file
493
4941.00
495    -- initial packaged release
Note: See TracBrowser for help on using the browser.