about summary refs log tree commit homepage
DateCommit message (Collapse)
2012-08-18Rainbows! 4.4.0 - minor improvements v4.4.0
For epoll/Cool.io-based concurrency models, shutdown() is now used to timeout keepalive clients to avoid race conditions. Minor documentation improvements.
2012-07-19thread_timeout: document additional caveats
Again, for the one thousandth time, timing out threads is very tricky business :<
2012-07-01test_isolate: bump raindrops dependency
As usual, test with the latest released version to avoid surprises.
2012-07-01coolio+xepoll_thread*: use shutdown() for keepalive timeout
Triggering Errno::EBADF is tricky in multithreaded situations due to possible race conditions and yet-to-be discovered bugs. shutdown(2) is also safe against apps the fork() internally but do not execve(2) nor set FD_CLOEXEC. n.b. calling fork() after pthreads are spawned may not be safe on all platforms w.r.t. malloc, but /is/ the case for glibc on GNU/Linux. Follow-up-to: commit a5b987619f4b793203f6a50e424fe98c5b0794ba
2012-06-18epoll*: favor shutdown(2) for keepalive timeout
Triggering Errno::EBADF is tricky in multithreaded situations due to possible race conditions and yet-to-be discovered bugs. shutdown(2) is also safe against apps the fork() internally but do not execve(2) nor set FD_CLOEXEC. n.b. calling fork() after pthreads are spawned may not be safe on all platforms w.r.t. malloc, but /is/ the case for glibc on GNU/Linux.
2012-05-09fiber_pool: take Fibers from larger pools faster
Array#pop can be significantly faster than Array#shift on large arrays (especially since we push into the Array). This is because Array#shift needs to shift all elements in the array, and Array#pop only needs to shorten the array by one element. The Fiber stack may also be hotter in CPU caches when we choose the most-frequently used stack.
2012-05-09test_isolate: update deps for EM tests
async_sinatra and rack-fiber_pool had new versions since we last updated.
2012-05-09test_isolate: bump unicorn and kgio versions for testing
Users will pull the latest upstream, ensure things keep working.
2012-05-09stream_response_epoll: fix for unicorn 4.3.x
unicorn 4.3.x now calls shutdown() explicitly on the socket, so we can't just rely on a dup()-ed FD to keep a socket around.
2012-05-08tests: require sleepy_penguin 3.1.0 or later
We'll be making the XEpollThreadPool users depend on this, too.
2012-04-12doc: some spelling fixes
Found with rdoc-spellcheck
2012-02-23t/test_isolate: update test dependencies
At least for the gems I'm most familiar with...
2011-10-12t0501: fix ambiguous shell construct for capture + subshells
Starting with "$((" can be ambiguous and confused for shell arithmetic.
2011-10-12http_server: fix log message if using Base (no concurrency)
Telling the user worker_connections=50 when using the Base concurrency model is misleading.
2011-09-02Rainbows! 4.3.1 - small bugfix v4.3.1
This release fixes a potential reentrancy deadlock when using the default logger from the Ruby standard library.
2011-08-30avoid potential Logger deadlock in SIGQUIT and SIGUSR1
If any combination of SIGQUIT and SIGUSR1 are sent to a Rainbows! worker in a /very/ short period of time, the Mutex used by the default Logger implementation may deadlock since Mutex synchronization is not reentrant-safe. Users of alternative logger implementations (or monkey-patched ones) are possibly not affected. Users of the logger_mp_safe.rb monkey-patch distributed[1] with unicorn are not affected. [1] http://unicorn.bogomips.org/examples/logger_mp_safe.rb
2011-08-20Rainbows! 4.3.0 - pull in changes from unicorn 4.1.0 v4.3.0
The deprecated Rainbows::HttpResponse class is finally gone thanks to Pratik Naik. Logging of errors is more consistent with the changes in unicorn 4.1.0. There are also minor documentation updates. See the unicorn 4.1.0 release notes for more details: http://bogomips.org/unicorn.git/tag/?id=v4.1.0
2011-08-20bump unicorn dependency version
We want the stricter parser the error log filtering in unicorn 4.1.0
2011-08-20TODO: remove splice(2) item
Rainbows! 3.3.0 added the copy_stream Configurator directive
2011-08-20rdoc: cleanup and stop depending on :enddoc:
It doesn't seem to work at the top of the file...
2011-08-20update development wrongdoc dep to 1.6
Hopefully this points more folks to email us.
2011-08-19event_machine: update rdoc for new Cramp homepage
Cramp has a homepage and mailing list now, yay!
2011-08-19cramp: update test dependency to version to 0.15
Everything appears to be working...
2011-08-19t/test_isolate: bump kgio test version
We always try to test with the latest and greatest.
2011-08-16more consistent logging for errors
The Unicorn.log_error method exists since 4.0.0
2011-08-12test_isolate: bump cool.io test version
Everything appears to work as expected under cool.io 1.1.0
2011-08-05Remove deprecated Rainbows::HttpResponse
Acked-by: Eric Wong <normalperson@yhbt.net>
2011-08-05Rainbows! 4.2.0 - Cramp WebSocket updates! v4.2.0
This release includes updates to support WebSockets under Cramp 0.14 and later. This will be the last release which supports Cramp 0.13. There are no changes in this release for non-Cramp users.
2011-08-05bump Cramp test dependency to 0.14
2011-08-05event_machine: APP needs to be in the main Client class
Oops, testing against new changes against cramp.git here
2011-08-05event_machine: add :em_client_class option
This can allow Cramp (and potentially other libraries) to subclass or implement duck-type compatible versions of Rainbows::EventMachine::Client.
2011-08-05cramp: bump test version to 0.13
cramp was just released a few days ago and all the tested pieces seem to work...
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