about summary refs log tree commit homepage
DateCommit message (Collapse)
2010-12-27thread_*: unindent
Hopefully this will make our code easier to follow.
2010-12-27introduce worker_yield method
This lets Rainbows! yield the current worker process when busy in the hopes another worker will pick up the slack. We can also override this for the single worker process case later if people care enough.
2010-12-27writer_thread_spawn: factor out Client.quit
Self-documenting code is easier to follow
2010-12-27writer_thread_*: split out classes into separate files
Use a consistent "Client" naming to reduce confusion
2010-12-27writer_thread_*: split out common socket_proxy code
Needless duplication sucks
2010-12-27writer_thread_*: unindent
2010-12-27revactor: split out tee_socket and use autoload
Some applications never need TeeSocket, and we don't have to worry about thread-safety with Revactor.
2010-12-26more :: prefix elimination
This should make things easier on the eyes.
2010-12-26fiber/queue: unindent
This also cleans up some constant resolution for the root Fiber class.
2010-12-26remove unnecessary "::" constant prefixing
It's ugly to look at.
2010-12-26never_block: simplify and split out code
alias_method is a mess, super is superb!
2010-12-26event_machine: split out server and client classes
This should make things easier to find
2010-12-26rev_thread_*: unindent and split out
This should make classes easier to find and hopefully make our code easier to follow.
2010-12-26rainbows/rev/* require/autoload cleanup
One line of code saved! We'll also avoid loading DeferredChunkResponse which is rarely needed (unlike DeferredResponse).
2010-12-26rename rev/thread => rev/thread_client
While we're at it, unindent
2010-12-26rev_thread_spawn: disable under Ruby 1.8
It still burns CPU at the first sign of doing anything interesting, so stop it. Ruby 1.9 is the future :P
2010-12-26GNUmakefile: fix packaging task
Oops
2010-12-26avoid HttpParser#keepalive? and HttpParser#reset
The HttpParser#next? method will come with keepalive protection for Rainbows!, which can prevent clients from monopolizing a server with excessive pipelining/keepalive requests.
2010-12-26bump Unicorn dependency
Unicorn 3.2.1 gives us an improved HttpParser#next? that preserves state until the next HttpParser#parse call.
2010-12-26rainbows/rev/*: uninident some more
This makes constant resolution more predictable, we hope.
2010-12-26rev: split out Rainbows::Rev::Server
One file per class/module should be easier for new hackers to find. Unindent rainbows/rev/core while we're at it, too.
2010-12-26rev: unindent, needless autoload
Deferred* classes will get loaded anyways since Rainbows::Rev::Client hit them in case statements.
2010-12-24doc: switch documentation generation to wrongdoc
It is a common base so we can share documentation tasks more easily with Unicorn and it ensures our RDoc no longer has JavaScript in it!
2010-12-20thread_timeout: fix bad comparison
This was causing unrelated requests to get killed every +timeout+ seconds, instead of only the ones that were running too long. Noticed-by: ghazel@gmail.com ref: http://mid.gmane.org/AANLkTi=7OhyTwkHsp_rXU7Gp1PokihiQ9bJigpO-BfN6@mail.gmail.com
2010-12-20thread_timeout: avoid a threading bug under 1.9
Because of the lack of GVL-releasing syscalls in this branch of the thread loop, we need Thread.pass to ensure other threads get scheduled appropriately under 1.9. This is likely a threading bug in 1.9 that warrants further investigation when we're in a better mood.
2010-12-14FAQ: add a note about config.threadsafe!
At least one user ran into it: http://mid.gmane.org/AANLkTikegPX2-6Q93++bz_aLt+9nLPJXjg+NkL8tDjeE@mail.gmail.com
2010-12-09respect client_body_buffer_size in Unicorn 3.1.0
This is only needed for concurrency options that do not use TeeInput, since TeeInput automatically handles this for us.
2010-12-09bump Unicorn dependency to 3.1.0
We'll be taking advantage of configurable client_buffer_body_size soon.
2010-12-09thread_timeout: de-Struct-ify
Avoid exposing internals, it's also slightly faster to access ivars directly rather than using method calls.
2010-12-08respect "rewindable_input false" in Unicorn config
This was completely overlooked for the Rainbows 2.0.x releases.
2010-12-08t/*.sh: indentation fixes
We use real tabs for indenting shell code since it is not Ruby.
2010-12-08rev+revactor: fix LARGE pipelined uploads
Large uploads behave differently with regard to buffering, and there were bugs in the way the Rev and Revactor backends handled uploads.
2010-12-03Rainbows! 2.0.1 - upload pipelining fixes v2.0.1
For HTTP clients living on the edge and pipelining uploads, we now fully support pipelined requests (as long as the application consumes each request in its entirety).
2010-12-03fix pipelining of requests with bodies
All synchronous models have this fixed in unicorn 3.0.1, so only Rev and EventMachine-based concurrency models require code changes.
2010-12-02ev_core: refactor and split cap_input out
Hopefully it makes more sense now and is easier to digest for new hackers.
2010-12-01ev_core: split out prepare_request_body
We may have other uses for this in the future...
2010-11-20Rainbows! 2.0.0 - minority rules! v2.0.0
This release is targeted at the minority of web applications that deal heavily with uploads. Thanks to Unicorn 3.x, we now support HTTP keepalive for requests with bodies as long as the application consumes them. Unicorn 3.x also allows disabling the rewindability requirement of "rack.input" (in violation of the Rack 1.x spec). The global client_body_max_size may also be applied per-endpoint using the Rainbows::MaxBody middleware described in: http://rainbows.rubyforge.org/Rainbows/MaxBody.html
2010-11-20tests: depend on Unicorn 3.0.0
Unicorn 3.0.0 is final and released, so we will use it in our tests
2010-11-19revactor: fix braindamaged commit/coding style
Oops, last commit was rushed
2010-11-19simpler keepalive check for synchronous models
Unicorn 3.x includes HttpParser#next? which will reset the parser for keepalive requests without extra steps.
2010-11-19max_body: rewrite wrappers to be safer
To avoid denial-of-service attacks, the wrappers need to intercept requests *before* they hit the memory allocator, so we need to reimplement the read(all) and gets cases to use smaller buffers whenever the application does not specify one.
2010-11-19max_body: do not enable for RevThread* models
Those already use CapInput, just like the rest of the evented Rainbows! world.
2010-11-19upgrade to Kgio 2.x and Unicorn 3.x
Kgio 2.0.0 has a superior API and less likely to conflict or blow up with other applications. Unicorn 3.x requires Kgio 2.x, too.
2010-11-17test_isolate: depend on newer Unicorn
It allows disabling rewindable input and contains simpler code for upload processing.
2010-11-16reimplement client_max_body_size handlers
This allows the client_max_body_size implementation to not rely on Unicorn::TeeInput internals, allowing it to be used with Unicorn::StreamInput (or any other (nearly) Rack::Lint-compatible input object).
2010-11-05avoid Errno::EAGAIN, harder
Errno::EAGAIN is still a problem under Ruby 1.9.2, so try harder to avoid it and use kgio methods. Even when 1.9.3 is available, kgio will still be faster as exceptions are slower than normal return values.
2010-11-04avoid Kgio::WaitReadable/WaitWritable constants
The underlying symbolic names are easier to type and recommended.
2010-11-04process_client: fix attempted keepalive on HTTP 0.9
The long-term goal is to make the Unicorn API more terse when handling keepalive.
2010-10-28Rainbows! 1.0.0 - internal cleanups v1.0.0
This release is merely a milestone in our evolving internal API. Use of kgio may result in performance improvements under Ruby 1.9.2 with non-blocking I/O-intensive workloads. The only bugfix is that SIGHUP reloads restores defaults on unset settings. A similar fix is included in Unicorn 2.0.0 as well.
2010-10-28tests: avoid race conditions on reload tests
We need to ensure the old worker is really dead before sending requests after reloading.