about summary refs log tree commit homepage
DateCommit message (Collapse)
2010-06-18prefer Array#[] lookup to Array#first/Array#last
Array#[] lookups are slightly faster under both rbx and 1.9, and easier to read.
2010-06-16test_isolate: fix ruby engine usage
Oops, looks like 1.9.1 exports the RUBY_ENGINE constant.
2010-06-11update test infrastructure to support Rubinius
Rubinius still has a few issues that prevent 100% support, but it basically works if log rotation or USR2 upgrades aren't required. Tickets for all known issues for Rubinius have been filed on the project's issue tracker. * rbx does not support -i/-p yet, so rely on MRI for that * "io/nonblock" is missing * avoiding any optional Gems for now (EM, Rev, etc..)
2010-06-11alt working_directory test from Unicorn
2010-06-11rely on Unicorn 0.991.0 for tests
2010-06-10bin/rainbows: sync up with latest Unicorn
This will allow us to be working_directory-aware as far as config.ru goes.
2010-06-10add Rainbows::ServerToken middleware
Some folks can now show off their Rainbows! installation
2010-06-10my-tap-lib: fix race condition in verbose mode
Don't try to redirect until we know our FIFO consumers are ready for us. This only seems to happen with bash and not ksh... commit d0a0883eaaeec37800ca5cd07647b7b66a00c453 in Unicorn
2010-06-09http_server: use super instead of alias_method
duh!
2010-06-08gemspec: bump unicorn dependency to 0.990.0
2010-06-07README: update with Zbatery info
2010-06-06tests: t9001: avoid needless filesystem activity
2010-06-06centralize body => IO conversion logic
Since EventMachine and Rev shared the same logic for optimizing and avoiding extra file opens for IO/File-ish response bodies, so centralize that. For Ruby 1.9 users, we've also enabled this logic so ThreadPool, ThreadSpawn, WriterThreadPool, and WriterThreadSpawn can take advantage of Rainbows::DevFdResponse-generated bodies while proxying sockets.
2010-06-04Rainbows! 0.94.0 - one eight ate my homework! v0.94.0
This release fixes corrupted large response bodies for Ruby 1.8 users with the WriterThreadSpawn and WriterThreadPool models introduced in 0.93.0. This bug did not affect Ruby 1.9 users nor the users of any older concurrency models. There is also a strange new Rainbows::Sendfile middleware. It is used to negate the effect of Rack::Contrib::Sendfile, if that makes sense. See the RDoc or http://rainbows.rubyforge.org/Rainbows/Sendfile.html for all the gory details. Finally, the RDoc for our test suite is on the website: http://rainbows.rubyforge.org/Test_Suite.html I wrote this document back when the project started but completely forgot to tell RDoc about it. Personally, this test suite is one of my favorite parts of the project.
2010-06-04sendfile: update RDoc for this middleware.
2010-06-04doc: update test suite README and link with RDoc
Apparently this document was completely forgotten over the course of development and never properly put on the website. The test suite is one of my favorite parts of Rainbows! and allows us to test the server as real clients would hit it.
2010-06-04cleanup makefiles, move publish_doc into main
Since the docs for this project are hosted on Rubyforge.org (currently Apache), it can't use the nginx "gzip_static on" configuration I normally use on on *.bogomips.org. I never used the irb/sh wrappers in local.mk, either, and the isolate bits have all been moved inside t/
2010-06-04tests: make -C $MODEL.tNNNN-foo.sh work again out-of-the box
It was missing dependencies on the first run
2010-06-04tests: cleanup isolate usage
We don't need tmp/ in our top level directory
2010-06-04tests: disable async_sinatra test for Ruby 1.9.2
Sinatra 0.9.4 does not appear to be compatible with Ruby 1.9.2...
2010-06-04local.mk.sample: add a hint for TMPDIR
It makes tests run significantly faster on a beefy box.
2010-06-04local.mk.sample: update for running 1.9.2 (preview3) tests
Now that 1.9.2 preview3 is available and usable, it'll be added to the list of Rubies we run and officially support.
2010-06-04Rakefile: explain ourselves when Isolating
Yes there's a reason for everything we do :>
2010-06-04test-lib: set NO_PROXY to counter http_proxy
Some testers (like myself) use http_proxy when isolating gems to avoid wasting bandwidth, but we don't proxy requests to localhost.
2010-06-03depend on Isolate ~> 2.0.2 for development
It's useful given all the Gems we support but don't have hard installation dependencies on.
2010-06-03add Rainbows::Sendfile middleware
This lets most concurrency models understand and process X-Sendfile efficiently with IO.copy_stream under Ruby 1.9. EventMachine can take advantage of this middleware under both Ruby 1.8 and Ruby 1.9.
2010-06-03writer_thread_*: fix static file response under 1.8
While these models are designed to work with IO.copy_stream under Ruby 1.9, it should be possible to run them under Ruby 1.8 without returning corrupt responses. The large file response test is beefed up to compare SHA1 checksums of the served file, not just sizes.
2010-06-03test-lib: remove ancient wait_for_pid() function
It hasn't been used since the first month of development when we started using FIFOs
2010-05-29Rainbows! 0.93.0 - MOAR!!!1 v0.93.0
In our race to have more concurrency options than real sites using this server, we've added two new and fully supported concurrency models: WriterThreadSpawn and WriterThreadPool They're both designed to for serving large static files and work best with IO.copy_stream (sendfile!) under Ruby 1.9. They may also be used to dynamically generate long running, streaming responses after headers are sent (use "proxy_buffering off" with nginx). Unlike most concurrency options in Rainbows!, these are designed to run behind nginx (or haproxy if you don't support POST/PUT requests) and are vulnerable to slow client denial of service attacks. I floated the idea of doing something along these lines back in the early days of Unicorn, but deemed it too dangerous for some applications. But nothing is too dangerous for Rainbows! So here they are now for your experimentation.
2010-05-29WriterThreadSpawn: fix stupid local variable error
2010-05-28doc: update comparison
I still have a hard time keeping track of what's capable of what.
2010-05-28tests: t0005: fudge the file malloc limit a bit
it's hard to make this test reliable, but try to add a small fudge factor based on the MRI default GC malloc limit.
2010-05-28dev: isolate: bump cramp to 0.11
2010-05-26writer_thread_spawn: worker_connections limits thread spawned
This should be logical, since we keep the connection alive when writing in our writer threads.
2010-05-26thread_spawn: document why we sleep instead of Thread.pass
2010-05-26writer_thread_pool: update documentation for new defaults
2010-05-26add WriterThreadSpawn concurrency model
2010-05-26gemspec: bump Unicorn dependency
no major internal changes until 2.0.0+
2010-05-26writer_thread_pool: remove single thread optimization
It's not worth the trouble and testability since having a single thread tends to bottleneck if there's a bad client.
2010-05-22tests: ignore trash/ directory entirely
This allows it to be a symlink to /dev/shm or similar
2010-05-20tests: chunked client_body_max_size fails with old curl
curl < 7.18.0 did not check for errors when doing chunked uploads. Unfortunately some distros are slow moving and bundle ancient versions of curl.
2010-05-20local.mk.sample: fix isolate 2.0.0 path :x
2010-05-20tests: t0004: beef up test for kills
since we don't set maximum time boundaries, just rely on the logs to properly log the dead processes.
2010-05-20tests: t0004: disable upper limit check
since we've already waited for time to elapse, there's no point in watching the upper limit here
2010-05-20tests: t0005: minimize writes
This test can cause a lot of I/O, especially when run in parallel. Just rely on the fixed rsha1 code to compute the SHA1 of the response.
2010-05-20tests: fix sha1sum usage
non-random_blob arguments weren't being taken into account correctly :x
2010-05-20tests: t0005 - disable concurrency for this test
slow test runners can buffer us and bloat memory usage unpredictably when tests are run under load
2010-05-19tests: t0007: robustness fix
On busy sytems, this timing-sensitive test is likely to fail, so give it some extra slack
2010-05-18doc: FAQ: clarify Rails support
2010-05-17WriterThreadPool: default concurrency to 20 pools
Idle threads are cheap enough and having responses queued up with a single slow client on a large response is bad.