Release Name: 0.91.0
Notes:
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. For Rack applications not
heavily bound by slow external network dependencies, consider Unicorn
instead as it simpler and easier to debug.
* http://rainbows.rubyforge.org/
* rainbows-talk@rubyforge.org
* git://git.bogomips.org/rainbows.git
Changes:
Unicorn 0.97.0 has a bunch of internal cleanups and small fixes
and this is mainly to resync with those changes.
keepalive_timeout now defaults to 5 seconds (from 2 seconds
previous). This should help out clients on slower connections.
Some small fixes and cleanups:
* Rainbows::Fiber::IO objects may leak if a rare app uses them
explicitly with FiberSpawn/FiberPool-only (not RevFiberSpawn)
* quiet down ENOTCONN handling, there's nothing we can do about
this error so we won't fill our logs with it.
Changes:
GIT-VERSION-GEN | 2 +-
GNUmakefile | 2 +-
bin/rainbows | 44 ++---------------------------
lib/rainbows.rb | 37 ++++++++----------------
lib/rainbows/const.rb | 2 +-
lib/rainbows/error.rb | 3 +-
lib/rainbows/ev_core.rb | 2 +-
lib/rainbows/fiber/base.rb | 10 ++----
lib/rainbows/fiber/io.rb | 4 ++-
lib/rainbows/rev.rb | 5 +++
lib/rainbows/revactor.rb | 11 ++++---
lib/rainbows/revactor/tee_input.rb | 4 +-
rainbows.gemspec | 2 +-
t/t0013-reload-bad-config.sh | 54 ++++++++++++++++++++++++++++++++++++
t/t0014-config-conflict.sh | 50 +++++++++++++++++++++++++++++++++
t/test-lib.sh | 8 +----
16 files changed, 148 insertions(+), 92 deletions(-)
commit d5d5658b927798c9f5c4aab9808c3c4386a51f14
Author: Eric Wong
Date: Mon Mar 1 09:46:59 2010 +0000
Rainbows! 0.91.0 - Unicorn resync
Unicorn 0.97.0 has a bunch of internal cleanups and small fixes
and this is mainly to resync with those changes.
keepalive_timeout now defaults to 5 seconds (from 2 seconds
previous). This should help out clients on slower connections.
Some small fixes and cleanups:
* Rainbows::Fiber::IO objects may leak if a rare app uses them
explicitly with FiberSpawn/FiberPool-only (not RevFiberSpawn)
* quiet down ENOTCONN handling, there's nothing we can do about
this error so we won't fill our logs with it.
commit cf71e6cb13b371aee75c0443dee102ae76ca2ded
Author: Eric Wong
Date: Sun Feb 28 19:37:27 2010 -0800
rainbows: remove redundant check for $DEBUG
commit 0339a494c6de90622d5c40df494e47ba9f986f3c
Author: Eric Wong
Date: Sun Feb 28 19:30:29 2010 -0800
let Unicorn.builder parse switches in config.ru
Less code for us is better
commit d7d1fd6b54501ece1a8777563c02de5b9297ed13
Author: Eric Wong
Date: Sat Feb 27 20:03:20 2010 -0800
keepalive_timeout defaults to 5 seconds
The previous 2 second default was not enough for folks on slow
connections where our OS socket buffers would've masked the time
it took to write out larger responses.
ref: <20100219220904.GA11377@dcvr.yhbt.net>
commit 9d60e1931021faa52bee60e34913c656317f2698
Author: Eric Wong
Date: Sat Feb 27 19:04:40 2010 -0800
ev_core: avoid needless String#dup
Just create an empty string instead and let Unicorn::HttpParser
allocate it internally to whatever size is needed.
commit 5221350c4c1e9a431fc06f14d3d8a695f8085ce5
Author: Eric Wong
Date: Sat Feb 27 18:26:08 2010 -0800
don't bother supporting platforms without FD_CLOEXEC
No point in having extra code around for platforms we
don't care about.
commit e537f067c589c4e0b206878a42169c743d3e3ff2
Author: Eric Wong
Date: Sat Feb 27 18:21:08 2010 -0800
revactor: cleanups to avoid instance_eval
instance_variable_{set,get} are faster, but equally ugly
commit 2661b5dc2f95dc6a081980a59d999881d804c90d
Author: Eric Wong
Date: Sat Feb 27 18:07:41 2010 -0800
revactor: document our EMFILE handling strategy
commit 84c03d4019493edcd1c59e2816fbea08f3375c92
Author: Eric Wong
Date: Sat Feb 27 17:58:16 2010 -0800
TCPSocket#peeraddr may raise ENOTCONN
Since we deal with untrusted/non-local clients, those clients
may disconnect at inopportune times and leave us with ENOTCONN
when we try to call getpeername(2)
commit 1e34a4f02e8f3743cf4d27117ccaf083a83b4d1f
Author: Eric Wong
Date: Fri Feb 26 03:22:44 2010 -0800
avoid leaks if app uses Rainbows::Fiber::IO
For the very rare apps out there using Rainbows::Fiber::IO, the
FiberSpawn and FiberPool (but not RevFiberSpawn) models could
leak memory if the app-created Rainbows::Fiber::IO objects
were dereferenced without being removed from the RD/WR hashes.
commit d6be7785ee6abf35001a0e7b655a6f64b7c7733f
Author: Eric Wong
Date: Fri Feb 26 03:04:18 2010 -0800
revactor/tee_input: sync w/ Unicorn::TeeInput struct-ification
commit a5f4d11cdb9465b1ffa2892b3d84ee53b8962930 in unicorn.git
switched all ivars to struct members for ease-of-hacking and
object size.
commit a5064bc0bb549ca60e3e4d5f1a912bafa46c7f5f
Author: Eric Wong
Date: Wed Feb 24 15:04:15 2010 -0800
switch to Unicorn.builder, depend on Unicorn 0.97.0+
The Unicorn.builder helper will help us avoid namespace
conflicts inside config.ru, allowing us to pass tests.
While we're at it, port some tests over from the latest
unicorn.git for dealing with bad configs.
commit ecdc78d04e874f64bfea1b787aa8f3d469df8e79
Author: Eric Wong
Date: Fri Feb 19 22:14:39 2010 -0800
test-lib: make FIFO start check an after_fork hook
enabling ready_pipe in Unicorn 0.96.0 breaks this.
commit 08dfbae3d340114810fbd279c2ea29825d4b79e8
Author: Eric Wong
Date: Thu Feb 18 19:33:13 2010 -0800
test-lib: remove needless fd closing
too dangerous with the ready_pipe feature in Unicorn 0.96+
commit 007bb3d73feacd30c8595025288f8a9e53ca5157
Author: Eric Wong
Date: Sat Feb 13 00:53:34 2010 -0800
gemspec: bump dependency on Unicorn to avoid leak
The HTTP parser in Unicorn <= 0.96.0 did not use the Ruby API
correctly. While this bug did not affect Unicorn itself,
Rainbows! allocates a new Unicorn::HttpParser object for every
client connection and Unicorn did not properly setup the parser
object to be freed.
commit de6b5dd5ffff6e21064f78f24c30c59e391ff370
Author: Eric Wong
Date: Thu Feb 11 22:15:29 2010 -0800
use Hash#compare_by_identity for performance
When available (Ruby 1.9), we can use Hash#compare_by_identity
to improve performance.
|