Files | Admin

Notes:

Release Name: 0.2.0

Notes:
Zbatery is an HTTP server for Rack applications on systems that either
do not support fork(), or have no memory (nor need) to run the
master/worker model.  It is based on Rainbows! (which is based on
Unicorn (which is based on Mongrel)) and inherits parts of each.
Zbatery supports your choice of all the thread/fiber/event/actor-based
concurrency models and Rack middleware that Rainbows! supports (or will
ever support) in a single process.

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

Changes:

This release resyncs against the latest features/cleanups
in Unicorn 0.97.0 and Rainbows! 0.91.0

Eric Wong (7):
    use Unicorn.builder to parse config.ru switches
    import selected parts of test suite from Rainbows!
    gemspec: depend on newer Unicorn for Unicorn.builder
    support "user" directive outside of after_fork hook
    MRI 1.8 thread fix to avoid blocking accept()
    disable more Unicorn methods
    support Unicorn 0.96.0+ ready_pipe daemonization



Changes: GIT-VERSION-GEN | 2 +- GNUmakefile | 2 +- bin/zbatery | 44 +-------- lib/zbatery.rb | 22 ++++- t/.gitignore | 4 + t/GNUmakefile | 117 +++++++++++++++++++++++ t/bin/content-md5-put | 36 +++++++ t/bin/sha1sum.rb | 23 +++++ t/bin/unused_listen | 40 ++++++++ t/bin/utee | 12 +++ t/large-file-response.ru | 14 +++ t/my-tap-lib.sh | 200 ++++++++++++++++++++++++++++++++++++++++ t/sleep.ru | 13 +++ t/t0003-reopen-logs.sh | 107 +++++++++++++++++++++ t/t0005-large-file-response.sh | 83 +++++++++++++++++ t/test-lib.sh | 155 +++++++++++++++++++++++++++++++ zbatery.gemspec | 3 +- 17 files changed, 832 insertions(+), 45 deletions(-) commit 816d4e840fca8606215a328beda90dd92153bcd7 Author: Eric Wong Date: Mon Mar 1 10:40:51 2010 +0000 Zbatery 0.2.0 - Unicorn/Rainbows! resync Eric Wong (7): use Unicorn.builder to parse config.ru switches import selected parts of test suite from Rainbows! gemspec: depend on newer Unicorn for Unicorn.builder support "user" directive outside of after_fork hook MRI 1.8 thread fix to avoid blocking accept() disable more Unicorn methods support Unicorn 0.96.0+ ready_pipe daemonization commit cdec2a634c85b92aa95d4c1f0ce2a056e332dfca Author: Eric Wong Date: Mon Mar 1 10:36:54 2010 +0000 support Unicorn 0.96.0+ ready_pipe daemonization ready_pipe allows the controlling process to detect errors more reliably. commit 98d605423b3a563de7b2d0b5f37695a4cf5bed7a Author: Eric Wong Date: Mon Mar 1 10:33:41 2010 +0000 disable more Unicorn methods init_self_pipe! and trap_deferred are worthless and possibly harmful to us commit 7dde8d1402a44e2997fa86ff5e3cf89c4ca6d82a Author: Eric Wong Date: Mon Mar 1 10:29:01 2010 +0000 MRI 1.8 thread fix to avoid blocking accept() Rainbows! commit ee7fe220ccbc991e1e7cbe982caf48e3303274c7 Under MRI 1.8, listen sockets do not appear to have the nonblocking I/O flag on by default, nor does it set the nonblocking I/O flag when calling #accept (but it does when using #accept_nonblock, of course). Normally this is not a problem even when using green threads since MRI will internally select(2) on the file descriptor before attempting a blocking (and immediately successful) accept(2). However, when sharing a listen descriptor across multiple processes, spurious wakeups are likely to occur, causing multiple processes may be woken up when a single client connects. This causes a problem because accept(2)-ing on multiple threads/processes for a single connection causes blocking accepts in multiple processes, leading to stalled green threads. This is not an issue under 1.9 where a blocking accept() call unlocks the GVL to let other threads run. commit 168bacbea266baecafe72adc1d7fa08674607744 Author: Eric Wong Date: Mon Mar 1 10:20:32 2010 +0000 support "user" directive outside of after_fork hook This is new in Unicorn 0.97.0, and makes sense to us since we don't fork. It won't work as nicely with log reopening in some cases, but it's better than nothing commit 796b2db10446ff263e419b1009f854ca6afa4fe4 Author: Eric Wong Date: Mon Mar 1 09:23:29 2010 +0000 gemspec: depend on newer Unicorn for Unicorn.builder commit 9dc37425107195530b30af80ed9aa1ad72c9be94 Author: Eric Wong Date: Mon Mar 1 08:27:36 2010 +0000 import selected parts of test suite from Rainbows! commit 5682d2879258f3ca06b28d4a1a7671b20f676dac Author: Eric Wong Date: Sun Feb 28 19:43:06 2010 -0800 use Unicorn.builder to parse config.ru switches Less code to maintain this way.