about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-07-30Rainbows! 4.1.0 - minor internal cleanups v4.1.0
There are only some minor cleanups in this release and a bump to kgio 2.5 to remove the dependency on io/wait. kgio 2.5 or later is now required (kgio 2.6+ will be required in the next release).
2011-07-21remove tcp_nodelay/tcp_nopush tweaking
Unicorn 4.x already defaults match those of Rainbows! to favor lower latency instead of lowered bandwidth usage.
2011-07-21remove unnecessary io/wait require
kgio 2.5 added kgio_wait_*able methods
2011-06-29Revert "http_server: cap timeout at 32-bit LONG_MAX seconds"
Unicorn (> 4.0.1) already handles this for us, not that it affects many people... This reverts commit 37c376a9253ed62d134cbb4dbc6eaecc6076c77e.
2011-06-28t0044: do not assume setsockopt() finished
Race conditions abound in the world of concurrency!
2011-06-28Fix Fiber* and WriterThread* breakage from removing io/wait
This fixes up breakage introduced in commit 905f0ff393629ddb4d70e3dc221b016128c47415 to switch to kgio for timed, synchronous waiting.
2011-06-28require kgio 2.5 for kgio_wait_readable(timeout)
Since kgio_wait_*able in kgio 2.5 takes an optional timeout argument, we no longer have to load the extra "io/wait" module. This saves us a small amount of some memory and also removes the extra ioctl(FIONREAD) syscall IO#wait enforces. Like IO#wait in Ruby 1.9.3dev, kgio_wait_readable may use ppoll() to wait on high-numbered file descriptors as efficiently as it waits on low-numbered descriptors.
2011-06-28bin/rainbows: release the OptionParser object from stack
No point in keeping it around to eat memory.
2011-06-27http_server: cap timeout at 32-bit LONG_MAX seconds
We can't wait for longer than 68 years.
2011-06-27Rainbows! 4.0.0 - MOAR concurrency for MOAR COARS v4.0.0
Rainbows! now scales to more than 1024 worker processes without special privileges. To enable this, Rainbows! now depends on Unicorn 4.x and thus raindrops[1]. client_max_header_size directive is added to limit per-client memory usage in headers. An experimental StreamResponseEpoll concurrency option now exists to buffer outgoing responses without any thread-safe dependencies. Unlike the rest of Rainbows! which works fine without nginx, this concurrency option is /only/ supported behind nginx, even more strongly so than Unicorn itself. non-nginx LAN clients are NOT supported for this. This relies on the sleepy_penguin[2] RubyGem (and Linux). There are some minor bug fixes and cleanups all around. See "git log v3.4.0.." for details. [1] http://raindrops.bogomips.org/ [2] http://bogomips.org/sleepy_penguin/
2011-06-27bump dependencies (kgio, unicorn, raindrops)
We now rely on Unicorn 4.0.0. We'll use the latest kgio and raindrops versions anyways.
2011-06-27remove unused arg in Rainbows::Response.setup
It hasn't been used in a while, but we kept it for Zbatery version compatibility.
2011-06-22epoll/client: properly close on all pipe responses
Some pipe responses can trigger the on_deferred_write_complete method without ever re-running the event loop. This appears to be the result of the occasional t0050 failures.
2011-06-22t0050: improve diagnostics for this test
This test seems to fail sometimes with Epoll and XEpoll...
2011-06-22t/test_isolate: remove unneeded comment
That's been around forever, and we think Rubinius supports that...
2011-06-22dev_fd_response: enable under Rubinius
Untested, but it should work nowadays...
2011-06-22Unicorn 4.x resync for ticker
This removes the extra per-process file descriptor and replaces it with Raindrops.
2011-06-22t/test_isolate: drop Unicorn test dependency for now
It's already a runtime dependency
2011-06-15remove IO_PURGATORY dependency
We no longer need to put all listeners away since Unicorn uses kgio.
2011-06-11configurator: add client_max_header_size directive
Lowering this will lower worst-case memory usage and mitigate some denial-of-service attacks. This should be larger than client_header_buffer_size. The default value is carried over from Mongrel and Unicorn.
2011-06-11doc: remove docs for Rainbows::Fiber::* APIs
Do not encourage their use, really.
2011-06-10stream_response_epoll: update documentation
Yes, this concurrency model is our strangest yet.
2011-06-11remove Rainbows.run method
We can get away with a single stack frame reduction. Unicorn itself has more stack reductions, but Rainbows! is further behind in this area.
2011-06-10ev_core: do not autochunk HTTP/1.0 (and 0.9) responses
Do not assume middlewares/applications are stupid and blindly add chunking to responses (we have precedence set by Rack::Chunked).
2011-06-10ev_core: use add_parse for trailers, too
HttpParser#trailers and #headers are actually the same method, so we'll just continue on.
2011-06-10gemspec: add GPLv3 to commented-out licenses section
Reduces inconsistency.
2011-06-10use HttpParser#add_parse API in Unicorn 3.7.0
It's easier-to-use in some cases.
2011-06-09tests: more fixes for StreamResponseEpoll
Oops.
2011-06-09response: sendfile_range fis for Rack::File in rack 1.3.0
Rack::File already sets Content-Range, so don't repeat work and reparse Content-Length.
2011-06-09t/t9002: use Rack::Head
We send HEAD requests and expect body-less responses. Noticed while running a newer rack version after re-isolating.
2011-06-09update various RubyGem dependencies
Gotta keep using the latest and greatest.
2011-06-09stream_response_epoll: our most "special" concurrency option yet
This doesn't use Rainbows::Base so we have no keepalive support at all. This could eventually be an option for streaming applications.
2011-06-09move reopen_worker_logs to base
We may not always use Rainbows! :Base since we don't want keepalive/immediate log reopening in some cases.
2011-06-06doc: remove --sanitize-html for pandoc
pandoc 1.8 no longer supports this, and we don't need it anyways since we only generate documentation from our repository.
2011-05-31xepoll_thread_*: update docs for Linux 3
Linux 3.0.0 is just around the corner and of course newer than 2.6.
2011-05-30test-lib: enable splice(2) for Linux 3.x
The latest Linux series is now 3.x, not 2.6.x
2011-05-21Rainbows 3.4.0 - minor updates and fixes v3.4.0
SIGQUIT (graceful shutdown) now drops idle keepalive clients for the concurrency models where maintaining an idle client is relatively inexpensive: Coolio, CoolioThreadPool, CoolioThreadSpawn, Epoll, EventMachine, XEpoll, XEpollThreadPool, XEpollThreadSpawn. Kgio.autopush now works properly for all multi-threaded concurrency models (if you're using :tcp_nopush).
2011-05-21pkg.mk: update to the latest version
* locale fix for grep
2011-05-21use and recommend sleepy_penguin 3.0.1
It's better under 1.9.3 (sleepy_penguin 3.0.1 was bogus)
2011-05-21use and recommend sleepy_penguin 3.0.0
It's better under 1.9.3
2011-05-21t0044: increase test reliability
2011-05-21try_defer: enable documentation
It should hopefully give this more visibility even though it's an internal feature.
2011-05-21xepoll_thread_pool/client: improve autopush support
We need to trigger a recv() to uncork the response. This won't affect fairness (much) since all recv()s are non-blocking and a successful header parse will put us in the back of the queue.
2011-05-20.gitignore: add tags/TAGS files
Some folks use them.
2011-05-20add tests for Kgio autopush on Linux
We can support it fully for a subset of concurrency models where we have full control over buffering and HTTP/1.1 keepalive clients.
2011-05-20add test for SIGQUIT disconnect
This will only be supported for certain concurency models, but it's probably good enough.
2011-05-20event_machine: disconnect idle clients at on SIGQUIT
Since it's cheap to maintain keepalive clients with EM, we need a way of disconnecting them in a timely fashion on rare SIGQUIT events.
2011-05-20client: use kgio_write across the board
This should enable Kgio "autopush" support for ThreadSpawn, ThreadPool, XEpollThreadSpawn, and XEpollThreadPool. (still needs tests)
2011-05-20coolio* + *epoll*: drop keepalive clients on SIGQUIT
In concurrency models long keepalive times are cheap (and thus more likely to be used), this allows Rainbows! to gracefully shut down more quickly.
2011-05-20epoll/xepoll: more consistent client implementations
There's less logic in the server this way and easier to potentially share code this way.