Files | Admin

Notes:

Release Name: 3.4.0

Notes:
Rainbows 3.4.0 - minor updates and fixes

Rainbows! is an HTTP server for sleepy Rack applications.  It is based on
Unicorn, but designed to handle applications that expect long
request/response times and/or slow clients.

* http://rainbows.rubyforge.org/
* rainbows-talk@rubyforge.org
* git://bogomips.org/rainbows.git

Changes:

SIGQUIT (graceful shutdown) now drops idle keepalive clients for
the concurrency models where maintaining an idle client is
relatively inexpensive: Coolio, CoolioThreadPool,
CoolioThreadSpawn, Epoll, EventMachine, XEpoll,
XEpollThreadPool, XEpollThreadSpawn.

Kgio.autopush now works properly for all multi-threaded
concurrency models (if you're using :tcp_nopush).



Changes: .gitignore | 2 + GIT-VERSION-GEN | 2 +- lib/rainbows/client.rb | 2 + lib/rainbows/configurator.rb | 4 +- lib/rainbows/coolio/heartbeat.rb | 1 + lib/rainbows/epoll.rb | 25 +----- lib/rainbows/epoll/client.rb | 19 ++++- lib/rainbows/epoll/response_pipe.rb | 2 +- lib/rainbows/epoll/server.rb | 12 ++- lib/rainbows/event_machine.rb | 12 +-- lib/rainbows/event_machine/try_defer.rb | 23 +++-- lib/rainbows/xepoll.rb | 7 +- lib/rainbows/xepoll/client.rb | 15 +++- lib/rainbows/xepoll_thread_pool.rb | 2 +- lib/rainbows/xepoll_thread_pool/client.rb | 8 ++- lib/rainbows/xepoll_thread_spawn.rb | 2 +- lib/rainbows/xepoll_thread_spawn/client.rb | 6 +- pkg.mk | 4 +- t/large-file-response.ru | 3 + t/t0043-quit-keepalive-disconnect.sh | 59 ++++++++++++++ t/t0044-autopush.sh | 120 ++++++++++++++++++++++++++++ t/test_isolate.rb | 4 +- 22 files changed, 270 insertions(+), 64 deletions(-) commit 983722912028f35348c8ff276df48855281be715 Author: Eric Wong Date: Sat May 21 03:02:09 2011 +0000 Rainbows 3.4.0 - minor updates and fixes SIGQUIT (graceful shutdown) now drops idle keepalive clients for the concurrency models where maintaining an idle client is relatively inexpensive: Coolio, CoolioThreadPool, CoolioThreadSpawn, Epoll, EventMachine, XEpoll, XEpollThreadPool, XEpollThreadSpawn. Kgio.autopush now works properly for all multi-threaded concurrency models (if you're using :tcp_nopush). commit e5eda7790806d6d7709d02db04c75f09340e9a24 Author: Eric Wong Date: Sat May 21 03:01:50 2011 +0000 pkg.mk: update to the latest version * locale fix for grep commit 7bd77ef78055af5d5232d16f00568ce02b947ae0 Author: Eric Wong Date: Fri May 20 18:23:50 2011 -0700 use and recommend sleepy_penguin 3.0.1 It's better under 1.9.3 (sleepy_penguin 3.0.1 was bogus) commit 07cb79c14399a292ae2a50db007180941c758c69 Author: Eric Wong Date: Fri May 20 18:23:50 2011 -0700 use and recommend sleepy_penguin 3.0.0 It's better under 1.9.3 commit 9009074ae535438696b706b4d6b8d4c72187c33e Author: Eric Wong Date: Fri May 20 18:15:30 2011 -0700 t0044: increase test reliability commit f83fe5edb79e51616afcf2a9f991cfe153eabd48 Author: Eric Wong Date: Fri May 20 15:44:48 2011 -0700 try_defer: enable documentation It should hopefully give this more visibility even though it's an internal feature. commit 0b9b4edc63c0021e567c68137e1ee7f9e99ddcc5 Author: Eric Wong Date: Fri May 20 18:13:21 2011 -0700 xepoll_thread_pool/client: improve autopush support We need to trigger a recv() to uncork the response. This won't affect fairness (much) since all recv()s are non-blocking and a successful header parse will put us in the back of the queue. commit a5419a5fd57a231e40b7a3ba48a02cdef15909be Author: Eric Wong Date: Fri May 20 15:30:11 2011 -0700 .gitignore: add tags/TAGS files Some folks use them. commit f4b084225b7115efecfbfb2b5d16da1f1da5c39e Author: Eric Wong Date: Fri May 20 15:17:21 2011 -0700 add tests for Kgio autopush on Linux We can support it fully for a subset of concurrency models where we have full control over buffering and HTTP/1.1 keepalive clients. commit a396de855e291d27d43454618031432634fe7d37 Author: Eric Wong Date: Fri May 20 14:24:14 2011 -0700 add test for SIGQUIT disconnect This will only be supported for certain concurency models, but it's probably good enough. commit 5d5033afa9052dc0d60e743f07bc694f008182b3 Author: Eric Wong Date: Fri May 20 14:22:37 2011 -0700 event_machine: disconnect idle clients at on SIGQUIT Since it's cheap to maintain keepalive clients with EM, we need a way of disconnecting them in a timely fashion on rare SIGQUIT events. commit bba079d8a605b546bc262e80234c3c233a386e44 Author: Eric Wong Date: Fri May 20 18:58:04 2011 +0000 client: use kgio_write across the board This should enable Kgio "autopush" support for ThreadSpawn, ThreadPool, XEpollThreadSpawn, and XEpollThreadPool. (still needs tests) commit ea6d0eab436c78113f8a61e7fcc34db4117d14c0 Author: Eric Wong Date: Fri May 20 09:19:51 2011 +0000 coolio* + *epoll*: drop keepalive clients on SIGQUIT In concurrency models long keepalive times are cheap (and thus more likely to be used), this allows Rainbows! to gracefully shut down more quickly. commit 90af18f6884857704d72fd6b2bb91718aad72117 Author: Eric Wong Date: Thu May 19 23:54:59 2011 -0700 epoll/xepoll: more consistent client implementations There's less logic in the server this way and easier to potentially share code this way. commit 5e4f790847198e1267b2fbd5decfa09e5cc3d618 Author: Eric Wong Date: Tue May 17 17:38:12 2011 -0700 doc: recommend io_splice 4.1.1 or later io_splice 4.1.1 works around issues with socket buffers filling up pipe buffers on blocking splice. See http://lkml.org/lkml/2009/1/13/478 for a better explanation.