Date | Commit message (Collapse) |
|
The only supported method is Rainbows.sleep in here
|
|
Only needed for Ruby 1.9
|
|
Just close the epoll descriptor, since the sleepy_penguin
epoll_wait wrapper may not return EINTR in the future.
|
|
This allows using IO::Splice.copy_stream from the "io_splice"
RubyGem on recent Linux systems. This also allows users to
disable copy_stream usage entirely and use traditional
response_body.each calls which are compatible with all Rack
servers (to workaround bugs in IO.copy_stream under 1.9.2-p180).
|
|
Finally, we have all methods in configurator and it's
much easier to document!
|
|
It can't be used as middleware for fully-buffering concurrency
models.
|
|
There's actually no reason we can't have these methods
in Rainbows::Configurator where it's easier to document
nowadays.
|
|
CoolioThreadPool has had it supported forever, but
only NeverBlock had it documented.
|
|
It's good to describe what they're useful for.
|
|
It's an internal implementation detail.
|
|
speling ficks and less confusing #initialize documentation
|
|
We're now able to configure the number of threads independently
of worker_connections.
|
|
coolio_thread_pool, neverblock both use it, and
xepoll_thread_pool will support it next, too.
|
|
This is probably friendlier on server resources in the worst
case than XEpollThreadSpawn but may perform worse in the client
client-visible way, too.
|
|
Fixed in kgio 2.4.0 now
This reverts commit a1168e7d2bfe182896f139d051ef099616fd1646.
|
|
No need for a string comparison
|
|
We only poll for one event (EPOLLIN/EPOLLOUT) at a time,
so there's no need to actually check since they're too
rare.
|
|
worker_yield is safer than setting a threshold with multiple
acceptors when thread limits are hit. Also, avoid sleep +
Thread#run since it's potentially racy if threads are extremely
unfairly scheduled.
Same things applied to xepoll_thread_spawn.
|
|
Infinite sleep is too dangerous due to possible race conditions,
so use worker_yield which is safer and cheaper in the general
case. We can also avoid sleeping on new threads by only
spawning when the client module is included.
|
|
Otherwise pipeline_ready can false positive on us
|
|
shorter line and 3 lines of code killed!
|
|
Not that it's actually used, right now.
|
|
|
|
More sharing, faster startups, and most importantly,
better error reporting if some things are missing.
|
|
It *can* have as many threads as it does idle connections.
|
|
We won't forget to reset defaults on SIGHUP anymore.
|
|
Too confusing otherwise...
|
|
We're changing our default to 1K buffers to save memory. This
should reduce memory usage of idle clients and lower pressure on
the MRI GC. Rails applications using session cookies (the
default) may want to up this to 2K or more.
|
|
Just use regular autoload, now. Less guesswork.
|
|
pavinging the way for changing MODEL_WORKER_CONNECTIONS
|
|
HTTP headers are usually smaller than 4K, so 16K was way too
much for most users and often caused unnecessary GC runs.
EventMachine and Coolio models can all share the same initial
read buffer, so it's less urgent that they get this lowered for
now...
|
|
This one actually has a realistic chance of running
hundreds/thousands of clients, and 32K per-client is
a huge amount.
|
|
Epoll#wait and epoll_wait(2) timeouts are in milliseconds,
not seconds. This affects xepoll, too.
|
|
Noticed under 1.8.7
|
|
Whee! This is going to be awesome.
|
|
They're probably ready for general use in a very limited
capacity...
|
|
Too much NIH and too fragile.
|
|
|
|
|
|
No need to expose things that don't need exposing.
|
|
This may change again in the future, but it
paves the way for simplifying this code...
|
|
This should make code review easier.
|
|
Might as well, threads are free and cheap on 64-bit
|
|
In case people try to do C10K, make life easier for them.
|
|
Thread-switching sometimes takes too long under YARV, so we
force a switch since the watchdog thread is lower-priority.
|
|
Should be fixed in 1.9.3 and/or future Kgio...
|
|
Ugh the old way was gross.
|
|
|
|
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).
|
|
It's in the JoinThreads module now
|