summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-05-28 04:03:32 +0000
committerEric Wong <normalperson@yhbt.net>2010-05-29 06:18:00 +0000
commitc3e22e4c2ad11785b5355a98355fd31d709976d5 (patch)
tree6a21a95a8348f1e6567ce946cf3fb23ed76eb776
parentf1cb1ce4e76ca13c9eb0bf8cfb4a51bd9f5a58c1 (diff)
In our race to have more concurrency options than real sites
using this server, we've added two new and fully supported
concurrency models: WriterThreadSpawn and WriterThreadPool

They're both designed to for serving large static files and work
best with IO.copy_stream (sendfile!) under Ruby 1.9.  They may
also be used to dynamically generate long running, streaming
responses after headers are sent (use "proxy_buffering off" with
nginx).

Unlike most concurrency options in Rainbows!, these are designed
to run behind nginx (or haproxy if you don't support POST/PUT
requests) and are vulnerable to slow client denial of service
attacks.

I floated the idea of doing something along these lines back in
the early days of Unicorn, but deemed it too dangerous for some
applications.  But nothing is too dangerous for Rainbows!  So
here they are now for your experimentation.
-rwxr-xr-xGIT-VERSION-GEN2
-rw-r--r--GNUmakefile2
-rw-r--r--README2
-rw-r--r--lib/rainbows/const.rb2
4 files changed, 5 insertions, 3 deletions
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 9160ae2..d8c4319 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v0.92.0.GIT
+DEF_VER=v0.93.0.GIT
 
 LF='
 '
diff --git a/GNUmakefile b/GNUmakefile
index 24726ae..1125e69 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -66,7 +66,7 @@ NEWS: GIT-VERSION-FILE
         $(RAKE) -s news_rdoc > $@+
         mv $@+ $@
 
-SINCE = 0.91.1
+SINCE = 0.92.0
 ChangeLog: LOG_VERSION = \
   $(shell git rev-parse -q "$(GIT_VERSION)" >/dev/null 2>&1 && \
           echo $(GIT_VERSION) || git describe)
diff --git a/README b/README
index b0ac444..51c32c8 100644
--- a/README
+++ b/README
@@ -24,6 +24,8 @@ For network concurrency, models we currently support are:
 * {FiberPool}[link:Rainbows/FiberPool.html]
 * {NeverBlock}[link:Rainbows/NeverBlock.html]
 * {RevThreadPool}[link:Rainbows/RevThreadPool.html]
+* {WriterThreadPool}[link:Rainbows/WriterThreadPool.html]
+* {WriterThreadSpawn}[link:Rainbows/WriterThreadSpawn.html]
 
 We have {many more on the way}[link:TODO.html] for handling network
 concurrency.  Additionally, we also use multiple processes (managed by
diff --git a/lib/rainbows/const.rb b/lib/rainbows/const.rb
index bbfda70..6fee6e0 100644
--- a/lib/rainbows/const.rb
+++ b/lib/rainbows/const.rb
@@ -3,7 +3,7 @@
 module Rainbows
 
   module Const
-    RAINBOWS_VERSION = '0.92.0'
+    RAINBOWS_VERSION = '0.93.0'
 
     include Unicorn::Const