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.
|