about summary refs log tree commit homepage
path: root/lib
DateCommit message (Collapse)
2011-04-26revactor: do not recommend, upstream is dormant
2011-04-26stream_file: hide internals
No need to expose things that don't need exposing.
2011-04-25make all concurrency options use 50 by default
This may change again in the future, but it paves the way for simplifying this code...
2011-04-21thread_timeout: annotate as much as possible
This should make code review easier.
2011-04-21increase RLIMIT_NPROC for thread-crazy folks
Might as well, threads are free and cheap on 64-bit
2011-04-21http_server: attempt to increase RLIMIT_NOFILE
In case people try to do C10K, make life easier for them.
2011-04-21thread_timeout: document Thread.pass usage
Thread-switching sometimes takes too long under YARV, so we force a switch since the watchdog thread is lower-priority.
2011-04-21join_threads: workaround blocking accept() issues
Should be fixed in 1.9.3 and/or future Kgio...
2011-04-19http_server: less hacky loading of concurrency model
Ugh the old way was gross.
2011-04-11epoll: fixes for Ruby 1.9.3dev
2011-04-11thread_timeout: rewrite for safety
This attempts to fix all the danger associated with using Thread#raise. Hopefully I succeeded. Note: this logic _cannot_ be used to fix the timeout.rb module in the Ruby standard library, that one needs to allow nested timeouts (which seems impossible).
2011-04-10thread_pool: get used of dead thread_join method
It's in the JoinThreads module now
2011-03-22queue_pool: switch to ivars to protect internals
2011-03-22thread_pool+thread_spawn: update documentation
They're not bad with slow clients a previously thought.
2011-03-21simplify LISTENERS closing
No need to obfuscate what it's doing
2011-03-20fix various warnings with "check-warnings" target
Run under 1.9.3dev
2011-03-15fiber/io: fix broken call to Kgio.trywrite
Fortunately it's a deprecated class that nobody uses...
2011-03-15Rainbows! 3.2.0 - trying to send files to slow clients v3.2.0
We now use IO#trysendfile in the sendfile 1.1.0 to reduce the cost of generating backtraces for slow clients (from EAGAIN). Nothing new for people not serving static files (but more on the way). Existing "sendfile" gem users must upgrade to 1.1.0 or risk being left without sendfile support at all: http://bogomips.org/rainbows.git/patch?id=cd8a874d
2011-03-10switch from IO#sendfile_nonblock to IO#trysendfile
IO#trysendfile does not raise exceptions for common EAGAIN errors, making it far less expensive to use with the following concurrency models: * Coolio * CoolioFiberSpawn * Revactor * FiberSpawn * FiberPool This requires the new sendfile 1.1.0 RubyGem and removes support for the sendfile 1.0.0. All sendfile users must upgrade or be left without sendfile(2) support. IO#sendfile behaves the same if you're using a multi-threaded concurrency option, but we don't detect nor use it unless IO#trysendfile exists.
2011-02-28use IO#wait instead of IO.select for single readers
It's a simpler interface and avoids allocating an array which is nice.
2011-02-11Rainbows! 3.1.0 - minor updates v3.1.0
Small bug fixes that have been sitting around, not much but it's already been one month since our last release. * Unicorn dependency updated to 3.4.0, so we get IPv6 support and Kgio.autopush support for ":tcp_nopush => true" users. * Optional :pool_size argument is fixed for NeverBlock and CoolioThreadPool users. * Mostly minor internal code cleanups * Sunshowers support removed, it was out-of-date and unmaintained. Cramp remains supported for now. * X-Rainbows-* response headers support removed, nobody used it. There are severalnew features in this release not documented here. Consider any new features not mentioned in these release notes to be subject to removal/renaming in future releases.
2011-02-11reverse_proxy: document as "not ready for production"
Of course some folks believe nothing in Rainbows! is :.
2011-02-07fix optional "use" argument handling
Actually use the Rainbows::O constant for use [ew: rewritten commit message subject] Acked-by: Eric Wong <normalperson@yhbt.net>
2011-02-07doc: rdoc cleanups and fixes
Don't need to document things that aren't ready, yet.
2011-02-06minimize &block usage for yield
No need to allocate a proc every time when we can just yield much more efficiently.
2011-02-06kill some unnecessary &block usage
We were needlessly allocating objects even when using yield.
2011-02-05*epoll: refactor common loop code
acceptor thread pools could use some work, still
2011-02-05*epoll: consolidate re-run logic
There's a lot of code duplication here :<
2011-02-05writer_thread_pool: needless use of Array#map
Array#each will do..
2011-02-05less expensive QUIT processing
Avoid constantly nuking the method cache and raising repeated exceptions while our master process is shutting us down.
2011-02-05http_server: kill a warning
Ugh, I need to think of a way to clean this up...
2011-02-04bump required Unicorn dependency for Kgio
We want to use the singleton methods in Kgio to reduce conditionals.
2011-02-04rename XAcceptEpoll to XEpoll
It's too long especially since XEpollThreadPool is planned :>
2011-02-04test_isolate: use latest Unicorn
It supports IPv6 and pulls in a better Kgio. Since Unicorn defaults to ":tcp_nopush => true", we need to flip it back to false to be compatible with the types of apps Rainbows! is targetted as.
2011-02-04reverse_proxy: small reorganization
Put all of our constants in one place for easy reference
2011-02-04reverse_proxy: properly read IPv6 addreses in upstreams
Yes it's fugly
2011-02-04epoll: handle EINTR properly in Ruby-space
We can't work around it effectively in the C extension itself. This requires the latest sleepy_penguin gem.
2011-02-01preliminary reverse proxy Rack application
This can be a starting point for developing Cool.io or EventMachine-based reverse proxy applications on Rainbows! Eventually Rainbows! could replace nginx for Unicorn users! Just don't consider this code production ready, yet, at all, it doesn't handle any sort of failover and has no automated tests, yet.
2011-01-31coolio/client: on_write_complete triggers read
This allows us to more aggressively handle pipelining as well as trigger future Kgio autopush behavior.
2011-01-26epoll/client: avoid unnecessary Epoll#set calls
We should only attempt to modify the descriptor when we block, and not for subsequent events.
2011-01-24initial XAcceptEpoll concurrency model
Edge-triggered epoll concurrency model with blocking accept() in a (hopefully) native thread. This is recommended over Epoll for Ruby 1.9 users as it can workaround accept()-scalability issues on multicore machines.
2011-01-24epoll/client: thread-safety for write queuing
We're living on the EDGE and mixing epoll with threads :D
2011-01-24epoll: make Epoll.quit more reusable
We'll be using this more in the future
2011-01-24neverblock: fix app_call under 1.8.7
super doesn't seem to capture arguments inside a block under 1.8.7 :<
2011-01-24clear LISTENERS array on close
No reason to keep it around
2011-01-21epoll/client: minor optimization
We know @wr_queue is empty since we just initialized it and the first thing an HTTP client does is read.
2011-01-21ev_core: force input to be given to app_call
No need to setting an ivar for most requests
2011-01-21epoll/client: factor out on_close method
We'll override it, maybe...
2011-01-21epoll/client: remove unused client
We don't do Level-Triggered I/O around here
2011-01-21epoll: reduce expiration calls and Time objects
We'll lower our precision for keepalive timeouts a little and and reduce our Time object allocation rate.