Files | Admin

Notes:

Release Name: 4.4.0

Notes:
Rainbows! 4.4.0 - minor improvements

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
* http://rainbows.rubyforge.org/NEWS.atom.xml

Changes:

For epoll/Cool.io-based concurrency models, shutdown() is now
used to timeout keepalive clients to avoid race conditions.
Minor documentation improvements.



Changes: GIT-VERSION-GEN | 2 +- lib/rainbows/configurator.rb | 2 +- lib/rainbows/const.rb | 2 +- lib/rainbows/coolio/client.rb | 7 ++++++- lib/rainbows/epoll.rb | 2 +- lib/rainbows/epoll/client.rb | 2 +- lib/rainbows/fiber_pool.rb | 2 +- lib/rainbows/http_server.rb | 3 ++- lib/rainbows/stream_response_epoll.rb | 24 +++++++++++++++++++++++- lib/rainbows/stream_response_epoll/client.rb | 3 ++- lib/rainbows/thread_timeout.rb | 9 +++++++++ lib/rainbows/xepoll_thread_pool/client.rb | 2 +- lib/rainbows/xepoll_thread_spawn/client.rb | 2 +- t/t0501-cramp-rainsocket.sh | 2 +- t/test_isolate.rb | 14 +++++++------- 15 files changed, 58 insertions(+), 20 deletions(-) commit 7450ebd46b6e7cf0eb59a3d6d561d5d6252bef16 Author: Eric Wong Date: Sat Aug 18 07:04:11 2012 +0000 Rainbows! 4.4.0 - minor improvements For epoll/Cool.io-based concurrency models, shutdown() is now used to timeout keepalive clients to avoid race conditions. Minor documentation improvements. commit 5bcbe397f4457fa6c76443cc77d662139ef464f2 Author: Eric Wong Date: Thu Jul 19 13:10:37 2012 -0700 thread_timeout: document additional caveats Again, for the one thousandth time, timing out threads is very tricky business :< commit 73a76531b7f4826cdb3bad0a0286038fb6ade4f3 Author: Eric Wong Date: Sun Jul 1 03:56:39 2012 +0000 test_isolate: bump raindrops dependency As usual, test with the latest released version to avoid surprises. commit 36ce10c49ce7aa0df9d47f5a5f870c23c1891258 Author: Eric Wong Date: Sat Jun 30 19:57:08 2012 +0000 coolio+xepoll_thread*: use shutdown() for keepalive timeout Triggering Errno::EBADF is tricky in multithreaded situations due to possible race conditions and yet-to-be discovered bugs. shutdown(2) is also safe against apps the fork() internally but do not execve(2) nor set FD_CLOEXEC. n.b. calling fork() after pthreads are spawned may not be safe on all platforms w.r.t. malloc, but /is/ the case for glibc on GNU/Linux. Follow-up-to: commit a5b987619f4b793203f6a50e424fe98c5b0794ba commit a5b987619f4b793203f6a50e424fe98c5b0794ba Author: Eric Wong Date: Mon Jun 18 20:32:39 2012 +0000 epoll*: favor shutdown(2) for keepalive timeout Triggering Errno::EBADF is tricky in multithreaded situations due to possible race conditions and yet-to-be discovered bugs. shutdown(2) is also safe against apps the fork() internally but do not execve(2) nor set FD_CLOEXEC. n.b. calling fork() after pthreads are spawned may not be safe on all platforms w.r.t. malloc, but /is/ the case for glibc on GNU/Linux. commit 604f64f624d562f480dc8424a6597ec5b32947df Author: Eric Wong Date: Wed May 9 21:11:39 2012 +0000 fiber_pool: take Fibers from larger pools faster Array#pop can be significantly faster than Array#shift on large arrays (especially since we push into the Array). This is because Array#shift needs to shift all elements in the array, and Array#pop only needs to shorten the array by one element. The Fiber stack may also be hotter in CPU caches when we choose the most-frequently used stack. commit 3e61265d4193340721dd53178c43c4fa24debb79 Author: Eric Wong Date: Wed May 9 21:11:13 2012 +0000 test_isolate: update deps for EM tests async_sinatra and rack-fiber_pool had new versions since we last updated. commit bdd64821feba82d9fce45c8dac64ba7b7bb530ac Author: Eric Wong Date: Wed May 9 02:20:42 2012 +0000 test_isolate: bump unicorn and kgio versions for testing Users will pull the latest upstream, ensure things keep working. commit bbd55c8bcd0d2833c99a2c23856ff07be7f46f9a Author: Eric Wong Date: Wed May 9 02:18:08 2012 +0000 stream_response_epoll: fix for unicorn 4.3.x unicorn 4.3.x now calls shutdown() explicitly on the socket, so we can't just rely on a dup()-ed FD to keep a socket around. commit 9573d9bc6c63aced28300a9d7346b5575eed8b7d Author: Eric Wong Date: Tue May 8 23:18:41 2012 +0000 tests: require sleepy_penguin 3.1.0 or later We'll be making the XEpollThreadPool users depend on this, too. commit 335b383fa43a6d21d473ebc81668dae9a3c09055 Author: Eric Wong Date: Wed Apr 11 21:48:36 2012 +0000 doc: some spelling fixes Found with rdoc-spellcheck commit f2c27e950b3314b4a647c482d506ba4c7314cac4 Author: Eric Wong Date: Thu Feb 23 08:07:13 2012 +0000 t/test_isolate: update test dependencies At least for the gems I'm most familiar with... commit b5756023920bc48bd879b419f80849ded38173c8 Author: Eric Wong Date: Wed Oct 12 16:29:23 2011 -0700 t0501: fix ambiguous shell construct for capture + subshells Starting with "$((" can be ambiguous and confused for shell arithmetic. commit db46699c438c2d1287563587fddea84e34c53482 Author: Eric Wong Date: Wed Oct 12 16:14:49 2011 -0700 http_server: fix log message if using Base (no concurrency) Telling the user worker_connections=50 when using the Base concurrency model is misleading.