rainbows 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.document +1 -0
  2. data/.gitignore +1 -0
  3. data/.manifest +46 -18
  4. data/.wrongdoc.yml +8 -0
  5. data/ChangeLog +849 -374
  6. data/Documentation/comparison.haml +26 -21
  7. data/FAQ +6 -0
  8. data/GIT-VERSION-GEN +1 -1
  9. data/GNUmakefile +23 -65
  10. data/LATEST +27 -0
  11. data/NEWS +53 -26
  12. data/README +7 -7
  13. data/Rakefile +1 -98
  14. data/Summary +0 -7
  15. data/TODO +2 -2
  16. data/lib/rainbows/app_pool.rb +2 -1
  17. data/lib/rainbows/base.rb +1 -0
  18. data/lib/rainbows/configurator.rb +9 -0
  19. data/lib/rainbows/const.rb +1 -1
  20. data/lib/rainbows/coolio/client.rb +191 -0
  21. data/lib/rainbows/coolio/core.rb +25 -0
  22. data/lib/rainbows/{rev → coolio}/deferred_chunk_response.rb +3 -2
  23. data/lib/rainbows/{rev → coolio}/deferred_response.rb +3 -3
  24. data/lib/rainbows/coolio/heartbeat.rb +20 -0
  25. data/lib/rainbows/{rev → coolio}/master.rb +2 -3
  26. data/lib/rainbows/{rev → coolio}/sendfile.rb +1 -1
  27. data/lib/rainbows/coolio/server.rb +11 -0
  28. data/lib/rainbows/coolio/thread_client.rb +36 -0
  29. data/lib/rainbows/coolio.rb +45 -0
  30. data/lib/rainbows/coolio_fiber_spawn.rb +26 -0
  31. data/lib/rainbows/coolio_support.rb +9 -0
  32. data/lib/rainbows/coolio_thread_pool/client.rb +8 -0
  33. data/lib/rainbows/coolio_thread_pool/watcher.rb +14 -0
  34. data/lib/rainbows/coolio_thread_pool.rb +57 -0
  35. data/lib/rainbows/coolio_thread_spawn/client.rb +8 -0
  36. data/lib/rainbows/coolio_thread_spawn.rb +27 -0
  37. data/lib/rainbows/dev_fd_response.rb +6 -2
  38. data/lib/rainbows/ev_core/cap_input.rb +3 -2
  39. data/lib/rainbows/ev_core.rb +13 -3
  40. data/lib/rainbows/event_machine/client.rb +124 -0
  41. data/lib/rainbows/event_machine/response_pipe.rb +1 -2
  42. data/lib/rainbows/event_machine/server.rb +15 -0
  43. data/lib/rainbows/event_machine.rb +13 -137
  44. data/lib/rainbows/fiber/base.rb +6 -7
  45. data/lib/rainbows/fiber/body.rb +4 -2
  46. data/lib/rainbows/fiber/coolio/heartbeat.rb +15 -0
  47. data/lib/rainbows/fiber/{rev → coolio}/methods.rb +4 -5
  48. data/lib/rainbows/fiber/{rev → coolio}/server.rb +1 -1
  49. data/lib/rainbows/fiber/{rev → coolio}/sleeper.rb +2 -2
  50. data/lib/rainbows/fiber/coolio.rb +12 -0
  51. data/lib/rainbows/fiber/io/methods.rb +6 -0
  52. data/lib/rainbows/fiber/io.rb +8 -10
  53. data/lib/rainbows/fiber/queue.rb +24 -30
  54. data/lib/rainbows/fiber.rb +7 -4
  55. data/lib/rainbows/fiber_pool.rb +1 -1
  56. data/lib/rainbows/http_server.rb +9 -2
  57. data/lib/rainbows/max_body.rb +3 -1
  58. data/lib/rainbows/never_block/core.rb +15 -0
  59. data/lib/rainbows/never_block/event_machine.rb +8 -3
  60. data/lib/rainbows/never_block.rb +37 -70
  61. data/lib/rainbows/process_client.rb +3 -6
  62. data/lib/rainbows/rack_input.rb +17 -0
  63. data/lib/rainbows/response/body.rb +18 -19
  64. data/lib/rainbows/response.rb +1 -1
  65. data/lib/rainbows/rev.rb +21 -43
  66. data/lib/rainbows/rev_fiber_spawn.rb +4 -19
  67. data/lib/rainbows/rev_thread_pool.rb +21 -75
  68. data/lib/rainbows/rev_thread_spawn.rb +18 -36
  69. data/lib/rainbows/revactor/body.rb +4 -1
  70. data/lib/rainbows/revactor/tee_socket.rb +44 -0
  71. data/lib/rainbows/revactor.rb +13 -48
  72. data/lib/rainbows/socket_proxy.rb +24 -0
  73. data/lib/rainbows/sync_close.rb +37 -0
  74. data/lib/rainbows/thread_pool.rb +66 -70
  75. data/lib/rainbows/thread_spawn.rb +40 -50
  76. data/lib/rainbows/thread_timeout.rb +33 -27
  77. data/lib/rainbows/timed_read.rb +5 -1
  78. data/lib/rainbows/worker_yield.rb +16 -0
  79. data/lib/rainbows/writer_thread_pool/client.rb +19 -0
  80. data/lib/rainbows/writer_thread_pool.rb +60 -91
  81. data/lib/rainbows/writer_thread_spawn/client.rb +69 -0
  82. data/lib/rainbows/writer_thread_spawn.rb +37 -117
  83. data/lib/rainbows.rb +12 -4
  84. data/rainbows.gemspec +15 -19
  85. data/t/GNUmakefile +4 -4
  86. data/t/close-has-env.ru +65 -0
  87. data/t/simple-http_Coolio.ru +9 -0
  88. data/t/simple-http_CoolioFiberSpawn.ru +10 -0
  89. data/t/simple-http_CoolioThreadPool.ru +9 -0
  90. data/t/simple-http_CoolioThreadSpawn.ru +9 -0
  91. data/t/t0004-heartbeat-timeout.sh +2 -2
  92. data/t/t0007-worker-follows-master-to-death.sh +1 -1
  93. data/t/t0015-working_directory.sh +7 -1
  94. data/t/t0017-keepalive-timeout-zero.sh +1 -1
  95. data/t/t0019-keepalive-cpu-usage.sh +62 -0
  96. data/t/t0040-keepalive_requests-setting.sh +51 -0
  97. data/t/t0050-response-body-close-has-env.sh +109 -0
  98. data/t/t0102-rack-input-short.sh +6 -6
  99. data/t/t0106-rack-input-keepalive.sh +48 -2
  100. data/t/t0113-rewindable-input-false.sh +28 -0
  101. data/t/t0113.ru +12 -0
  102. data/t/t0114-rewindable-input-true.sh +28 -0
  103. data/t/t0114.ru +12 -0
  104. data/t/t9100-thread-timeout.sh +24 -2
  105. data/t/t9101-thread-timeout-threshold.sh +6 -13
  106. data/t/test-lib.sh +2 -1
  107. data/t/test_isolate.rb +9 -4
  108. data/t/times.ru +6 -0
  109. metadata +109 -42
  110. data/GIT-VERSION-FILE +0 -1
  111. data/lib/rainbows/fiber/rev/heartbeat.rb +0 -8
  112. data/lib/rainbows/fiber/rev/kato.rb +0 -22
  113. data/lib/rainbows/fiber/rev.rb +0 -13
  114. data/lib/rainbows/rev/client.rb +0 -194
  115. data/lib/rainbows/rev/core.rb +0 -41
  116. data/lib/rainbows/rev/heartbeat.rb +0 -23
  117. data/lib/rainbows/rev/thread.rb +0 -46
  118. data/man/man1/rainbows.1 +0 -193
data/ChangeLog CHANGED
@@ -1,375 +1,850 @@
1
- ChangeLog from git://git.bogomips.org/rainbows.git (v0.97.0..v2.0.1)
1
+ ChangeLog from http://git.bogomips.org/cgit/rainbows.git (v0.97.0..v2.1.0)
2
2
 
3
- commit b4835c6d542c6369f2523ab68fc41b0202d7c6dc
4
- Author: Eric Wong <normalperson@yhbt.net>
5
- Date: Fri Dec 3 01:23:11 2010 +0000
6
-
7
- Rainbows! 2.0.1 - upload pipelining fixes
8
-
9
- For HTTP clients living on the edge and pipelining uploads, we
10
- now fully support pipelined requests (as long as the application
11
- consumes each request in its entirety).
12
-
13
- commit c096e735efea5050b0559748633403f0387ea3b3
14
- Author: Eric Wong <normalperson@yhbt.net>
15
- Date: Fri Dec 3 01:12:08 2010 +0000
16
-
17
- fix pipelining of requests with bodies
18
-
19
- All synchronous models have this fixed in unicorn 3.0.1,
20
- so only Rev and EventMachine-based concurrency models
21
- require code changes.
22
-
23
- commit 64889d9136fa5466269232c26a2f235dd763d8f0
24
- Author: Eric Wong <normalperson@yhbt.net>
25
- Date: Thu Dec 2 07:38:14 2010 +0000
26
-
27
- ev_core: refactor and split cap_input out
28
-
29
- Hopefully it makes more sense now and is easier to
30
- digest for new hackers.
31
-
32
- commit 945b5760d86b9dd00e65bd0625b98cf75f6a8257
33
- Author: Eric Wong <normalperson@yhbt.net>
34
- Date: Wed Dec 1 21:29:34 2010 -0800
35
-
36
- ev_core: split out prepare_request_body
37
-
38
- We may have other uses for this in the future...
39
-
40
- commit 90789761f0cc78d3726f3a2eda1c5fe95c015ac2
41
- Author: Eric Wong <normalperson@yhbt.net>
42
- Date: Fri Nov 19 19:09:59 2010 -0800
43
-
44
- Rainbows! 2.0.0 - minority rules!
45
-
46
- This release is targeted at the minority of web applications
47
- that deal heavily with uploads.
48
-
49
- Thanks to Unicorn 3.x, we now support HTTP keepalive for
50
- requests with bodies as long as the application consumes them.
51
- Unicorn 3.x also allows disabling the rewindability requirement
52
- of "rack.input" (in violation of the Rack 1.x spec).
53
-
54
- The global client_body_max_size may also be applied per-endpoint
55
- using the Rainbows::MaxBody middleware described in:
56
-
57
- http://rainbows.rubyforge.org/Rainbows/MaxBody.html
58
-
59
- commit c33878ac0f9f990aaa2054f8f00674d61bf5c848
60
- Author: Eric Wong <normalperson@yhbt.net>
61
- Date: Sat Nov 20 03:10:09 2010 +0000
62
-
63
- tests: depend on Unicorn 3.0.0
64
-
65
- Unicorn 3.0.0 is final and released, so we will use it in our
66
- tests
67
-
68
- commit a5986295bfb7bd7c44c863e4670f16481097c7fc
69
- Author: Eric Wong <normalperson@yhbt.net>
70
- Date: Fri Nov 19 18:55:06 2010 -0800
71
-
72
- revactor: fix braindamaged commit/coding style
73
-
74
- Oops, last commit was rushed
75
-
76
- commit da9dfc1dece4fbcdf2a8e8ccdb4914ce4aa3a998
77
- Author: Eric Wong <normalperson@yhbt.net>
78
- Date: Fri Nov 19 18:39:02 2010 -0800
79
-
80
- simpler keepalive check for synchronous models
81
-
82
- Unicorn 3.x includes HttpParser#next? which will reset the
83
- parser for keepalive requests without extra steps.
84
-
85
- commit c6ffae22748bc22d5ef88fea2a3ca67f480ee74b
86
- Author: Eric Wong <normalperson@yhbt.net>
87
- Date: Fri Nov 19 10:19:45 2010 +0000
88
-
89
- max_body: rewrite wrappers to be safer
90
-
91
- To avoid denial-of-service attacks, the wrappers need to
92
- intercept requests *before* they hit the memory allocator, so we
93
- need to reimplement the read(all) and gets cases to use
94
- smaller buffers whenever the application does not specify one.
95
-
96
- commit 3cee07d750f678af92318c14110c803be3f9b97f
97
- Author: Eric Wong <normalperson@yhbt.net>
98
- Date: Fri Nov 19 10:19:44 2010 +0000
99
-
100
- max_body: do not enable for RevThread* models
101
-
102
- Those already use CapInput, just like the rest of the evented
103
- Rainbows! world.
104
-
105
- commit 00b854e37391322c05cc16115b245d855b4970be
106
- Author: Eric Wong <normalperson@yhbt.net>
107
- Date: Fri Nov 19 10:19:43 2010 +0000
108
-
109
- upgrade to Kgio 2.x and Unicorn 3.x
110
-
111
- Kgio 2.0.0 has a superior API and less likely to conflict or
112
- blow up with other applications. Unicorn 3.x requires Kgio 2.x,
113
- too.
114
-
115
- commit 0f00424be24806791f2b253ddac6d35102842646
116
- Author: Eric Wong <normalperson@yhbt.net>
117
- Date: Wed Nov 17 10:06:45 2010 -0800
118
-
119
- test_isolate: depend on newer Unicorn
120
-
121
- It allows disabling rewindable input and contains
122
- simpler code for upload processing.
123
-
124
- commit 31cf77e7aa2f2e6065e7ace44e55c3f042b51f1b
125
- Author: Eric Wong <normalperson@yhbt.net>
126
- Date: Tue Nov 16 16:16:42 2010 -0800
127
-
128
- reimplement client_max_body_size handlers
129
-
130
- This allows the client_max_body_size implementation to not rely
131
- on Unicorn::TeeInput internals, allowing it to be used with
132
- Unicorn::StreamInput (or any other (nearly)
133
- Rack::Lint-compatible input object).
134
-
135
- commit 42747db815ad668b20849afb2a9dcdd1319713ae
136
- Author: Eric Wong <normalperson@yhbt.net>
137
- Date: Tue Nov 2 12:32:23 2010 -0700
138
-
139
- avoid Errno::EAGAIN, harder
140
-
141
- Errno::EAGAIN is still a problem under Ruby 1.9.2, so try harder
142
- to avoid it and use kgio methods. Even when 1.9.3 is available,
143
- kgio will still be faster as exceptions are slower than normal
144
- return values.
145
-
146
- commit 427ef4a2953a4b2d34f7dd89566a0cb5ee6e734d
147
- Author: Eric Wong <normalperson@yhbt.net>
148
- Date: Tue Nov 2 11:49:17 2010 -0700
149
-
150
- avoid Kgio::WaitReadable/WaitWritable constants
151
-
152
- The underlying symbolic names are easier to type and
153
- recommended.
154
-
155
- commit ed3a30dcfb5489447dec9c3f73e8bec9dbf7713a
156
- Author: Eric Wong <normalperson@yhbt.net>
157
- Date: Thu Nov 4 19:52:35 2010 -0700
158
-
159
- process_client: fix attempted keepalive on HTTP 0.9
160
-
161
- The long-term goal is to make the Unicorn API more terse when
162
- handling keepalive.
163
-
164
- commit 9f185041fb7af4cda21ba2d547fd4d16d9b2e453
165
- Author: Eric Wong <normalperson@yhbt.net>
166
- Date: Thu Oct 28 08:42:09 2010 +0000
167
-
168
- Rainbows! 1.0.0 - internal cleanups
169
-
170
- This release is merely a milestone in our evolving internal API.
171
- Use of kgio may result in performance improvements under Ruby
172
- 1.9.2 with non-blocking I/O-intensive workloads.
173
-
174
- The only bugfix is that SIGHUP reloads restores defaults on
175
- unset settings. A similar fix is included in Unicorn 2.0.0
176
- as well.
177
-
178
- commit 015635f877084cc05a9e6e4c1430c70279d0a04e
179
- Author: Eric Wong <normalperson@yhbt.net>
180
- Date: Thu Oct 28 08:40:12 2010 +0000
181
-
182
- tests: avoid race conditions on reload tests
183
-
184
- We need to ensure the old worker is really dead before sending
185
- requests after reloading.
186
-
187
- commit b06c6b3ac214bc598d499c994884113d5b106e90
188
- Author: Eric Wong <normalperson@yhbt.net>
189
- Date: Thu Oct 28 08:29:53 2010 +0000
190
-
191
- t0018: wait for old worker to be reaped
192
-
193
- On busy machines, old workers may not shutdown quickly
194
- enough and may still be processing requests.
195
-
196
- commit f84f138233be0607b0151a5a28c3f9190ba336a2
197
- Author: Eric Wong <normalperson@yhbt.net>
198
- Date: Thu Oct 28 08:20:37 2010 +0000
199
-
200
- rev+event_machine: small cleanups with new parser API
201
-
202
- These allow for small reductions in the amount of variables
203
- we have to manage, more changes coming with later Unicorns.
204
-
205
- commit c4579db76b9ed5b0286fad852e798e8a890f093c
206
- Author: Eric Wong <normalperson@yhbt.net>
207
- Date: Thu Oct 28 02:17:25 2010 +0000
208
-
209
- HUP reload restores defaults on unset settings
210
-
211
- For consistency, changed settings are reset back to
212
- their default values if they are removed or commented
213
- out from the config file.
214
-
215
- commit 83644e02068311c7ff9cdbc63efd4764d1518138
216
- Author: Eric Wong <normalperson@yhbt.net>
217
- Date: Wed Oct 27 23:52:28 2010 +0000
218
-
219
- use Unicorn 2.0.0 final
220
-
221
- Unicorn 2.0.0 has CPU wakeup reductions.
222
-
223
- commit 2b9503566759678c9fbd7b01d1b5f487854208db
224
- Author: Eric Wong <normalperson@yhbt.net>
225
- Date: Tue Oct 26 21:36:02 2010 +0000
226
-
227
- Rakefile: updates for prereleases
228
-
229
- We do prereleases, now.
230
-
231
- commit a47cd4a7f392a76357ed4f3e458797ae1f9c8f25
232
- Author: Eric Wong <normalperson@yhbt.net>
233
- Date: Tue Oct 26 21:26:03 2010 +0000
234
-
235
- Rainbows! 1.0.0pre1 - kinder, gentler I/O
236
-
237
- Mostly internal changes for kgio (and Unicorn) integration.
238
- There should be no (supported) user-visible changes from
239
- Rainbows! 0.97.0. kgio should improve performance for
240
- concurrency models that use non-blocking I/O internally,
241
- especially under Ruby 1.9.2
242
-
243
- commit 0298a6743f2cadf8c8e47a298c5b35505b74af46
244
- Author: Eric Wong <normalperson@yhbt.net>
245
- Date: Tue Oct 26 21:20:45 2010 +0000
246
-
247
- gemspec: bump development dependency of Isolate
248
-
249
- Might as well go with the latest and greatest,
250
- it has saner defaults at least.
251
-
252
- commit 567e6ce5dba5ad2cca2cca8c64123e27939bff2b
253
- Author: Eric Wong <normalperson@yhbt.net>
254
- Date: Tue Oct 26 21:13:10 2010 +0000
255
-
256
- doc: RDoc updates
257
-
258
- Once again we avoid documenting internals on the public
259
- website and use code comments for other developers.
260
-
261
- commit 894cb73887c106acc793f0317ee849ae215ead56
262
- Author: Eric Wong <normalperson@yhbt.net>
263
- Date: Mon Oct 25 22:15:47 2010 +0000
264
-
265
- reduce dependency on IO#write_nonblock
266
-
267
- kgio_trywrite is superior if it is available.
268
-
269
- commit 4ee6e0dafeb1b7af28fa90ae27c1a1a04aa8e852
270
- Author: Eric Wong <normalperson@yhbt.net>
271
- Date: Sat Oct 23 00:42:04 2010 +0000
272
-
273
- http_request: remove this (sub)class
274
-
275
- It does not appear to be needed, for now, since the
276
- parser and Unicorn::HttpRequest are one and the same.
277
-
278
- commit 180485d49ea858f83ef2a28a9e07224aa514edc7
279
- Author: Eric Wong <normalperson@yhbt.net>
280
- Date: Fri Oct 22 16:21:03 2010 -0700
281
-
282
- unindent most files
283
-
284
- This simplifies and disambiguates most constant resolution
285
- issues as well as lowering our identation level. Hopefully
286
- this makes code easier to understand.
287
-
288
- commit 41145ed4d335718ac43aec9313b7571a12fe96ee
289
- Author: Eric Wong <normalperson@yhbt.net>
290
- Date: Fri Oct 22 15:31:47 2010 -0700
291
-
292
- local.mk.sample: remove testing under 1.9.1
293
-
294
- Ruby 1.9.2 has been out for a while and is the stable
295
- release nowadays.
296
-
297
- commit b595ad7333ff85452b229674c6726e40d2cf7bb9
298
- Author: Eric Wong <normalperson@yhbt.net>
299
- Date: Fri Oct 22 18:55:46 2010 +0000
300
-
301
- README: update copyright year
302
-
303
- This project is over 1 year old!
304
-
305
- commit 4a568eeb7d17885579790d0ae004f04aa13479cb
306
- Author: Eric Wong <normalperson@yhbt.net>
307
- Date: Fri Oct 22 02:50:09 2010 +0000
308
-
309
- dev_fd_response: do not wrap for Fiber-aware IOs
310
-
311
- Applications may use wait_readable-aware methods directly
312
- to work with Rainbows!
313
-
314
- commit 6d46978bdc8d2ee4263431ecdcada53389b12597
315
- Author: Eric Wong <normalperson@yhbt.net>
316
- Date: Fri Oct 22 02:51:18 2010 +0000
317
-
318
- fiber_{pool,spawn}: unindent
319
-
320
- Reduces confusion for constant resolution/scoping rules
321
- and lowers LoC.
322
-
323
- commit 03806d2b44c2d3cee75258ee9e83d671e751baeb
324
- Author: Eric Wong <normalperson@yhbt.net>
325
- Date: Fri Oct 22 02:38:40 2010 +0000
326
-
327
- fiber_pool: no need for old Fiber::IO
328
-
329
- Rainbows::Client takes care of the I/O wait/read-ability
330
- for us already.
331
-
332
- commit 15631717fce044fbad2f386a7b1c7daf4bdd83d2
333
- Author: Eric Wong <normalperson@yhbt.net>
334
- Date: Thu Oct 21 16:25:39 2010 -0700
335
-
336
- code shuffling for kgio
337
-
338
- Despite the large number of changes, most of it is code
339
- movement here.
340
-
341
- commit d4a2b5dd2b85f4b2d3bb120ee1e1b0dde31bc25c
342
- Author: Eric Wong <normalperson@yhbt.net>
343
- Date: Wed Oct 20 17:48:58 2010 -0700
344
-
345
- unicorn 2.x updates + kgio
346
-
347
- We get basic internal API changes from Unicorn,
348
- code simplifications coming next.
349
-
350
- commit a085ba3586756ac1f778d2862f75889de2449b0e
351
- Author: Eric Wong <normalperson@yhbt.net>
352
- Date: Wed Oct 20 17:48:57 2010 -0700
353
-
354
- http_server: more descriptive error for debugging
355
-
356
- Sometimes we have stupid syntax or constant resolution
357
- errors in our code.
358
-
359
- commit ad821f70a2488a91f2be1ac53cb2e64f50743989
360
- Author: Eric Wong <normalperson@yhbt.net>
361
- Date: Tue Sep 28 17:40:01 2010 -0700
362
-
363
- start using kgio library
364
-
365
- It removes the burden of byte slicing and setting file
366
- descriptor flags. In some cases, we can remove unnecessary
367
- peeraddr calls, too.
368
-
369
- commit 11c75ec06ce72cea0c760161dc01a196500aa293
370
- Author: Eric Wong <normalperson@yhbt.net>
371
- Date: Fri Sep 17 08:55:35 2010 +0000
372
-
373
- event_machine: remove unnecessary "return"
374
-
375
- Noise is bad.
3
+ commit 22370570a203ad584cc882abb26feb880a0ed4f2
4
+ Author: Eric Wong <normalperson@yhbt.net>
5
+ Date: Wed Dec 29 02:13:04 2010 +0000
6
+
7
+ Rainbows! 2.1.0 - Cool.io, bugfixes and more!
8
+
9
+ Cool.io (new version of Rev) support is explicitly added
10
+ (it always worked before). ":Coolio" may be used in place
11
+ of ":Rev" anywhere in your Rainbows! config file.
12
+
13
+ There is a new "keepalive_requests" config directive to limit
14
+ the number of requests a single connection may make (default:
15
+ 100, same as nginx). This may be useful for better
16
+ load-balancing characteristics.
17
+
18
+ The old "Rev" prefixes remain supported as long as Cool.io
19
+ remains compatible with Rev (likely forever).
20
+
21
+ Bug fixes:
22
+
23
+ * Rainbows::ThreadTimeout middleware with multiple clients
24
+ * large, pipelined upload errors with Revactor+Coolio(Rev)
25
+ * high CPU usage for maintaining idle keepalive on *Fiber*
26
+ * needless ThreadPool wakeups
27
+ * request env prematurely cleared keepalive requests,
28
+ breaking some middlewares such as Clogger.
29
+ * "close" not called on body if wrapper and sendfile used together
30
+
31
+ Various code cleanups, and our RDoc website is JavaScript-free.
32
+ See the ChangeLog or git for all changes.
33
+
34
+ commit 40445641f11f01c6a24bf96c8b80eed5fd33a512
35
+ Author: Eric Wong <normalperson@yhbt.net>
36
+ Date: Tue Dec 28 17:59:27 2010 -0800
37
+
38
+ complete Rev => Coolio renaming
39
+
40
+ We use Cool.io internally everywhere now, but preserve
41
+ Rev-based models for anybody using them.
42
+
43
+ commit 3495d59763e6159975debf32728dc53fc41c5ea1
44
+ Author: Eric Wong <normalperson@yhbt.net>
45
+ Date: Mon Dec 27 20:25:39 2010 -0800
46
+
47
+ several response body#close fixes
48
+
49
+ Some middlewares require the Rack env to be preserved all
50
+ the way through to close, so we'll ensure all request models
51
+ preserve it.
52
+
53
+ We also need to better response body wrappers/proxies always get
54
+ fired properly when returning. IO.copy_stream and "sendfile"
55
+ gem users could hit cases where wrappers did not fire properly.
56
+
57
+ commit 53afe0b23fc67c5b25541cddbd68f905c649e756
58
+ Author: Eric Wong <normalperson@yhbt.net>
59
+ Date: Tue Dec 28 06:54:06 2010 +0000
60
+
61
+ dev_fd_response: pass files straight through
62
+
63
+ No need to wrap regular files
64
+
65
+ commit 46d79be0ad3de48ef0a677537becb3508ccad31e
66
+ Author: Eric Wong <normalperson@yhbt.net>
67
+ Date: Tue Dec 28 01:14:43 2010 +0000
68
+
69
+ enable the keepalive_requests config option
70
+
71
+ This will allow servers to limit the number of keepalive
72
+ requests that can be made over a single connection to
73
+ prevent denial-of-service and also to improve fairness
74
+ in load-balancing.
75
+
76
+ commit ef66567984780b2ce8daa155c367bcf7e049ab77
77
+ Author: Eric Wong <normalperson@yhbt.net>
78
+ Date: Mon Dec 27 23:25:12 2010 +0000
79
+
80
+ coolio*: favor Coolio over Rev
81
+
82
+ We still use and define Rev internally, but that's
83
+ mostly just manual labor of converting stuff over.
84
+
85
+ commit 728496a31f34234b46d7025a23933aa06dd824f5
86
+ Author: Eric Wong <normalperson@yhbt.net>
87
+ Date: Mon Dec 27 13:10:57 2010 -0800
88
+
89
+ coolio_fiber_spawn: decrease CPU usage for keepalive
90
+
91
+ Blindly resuming fibers every second is a waste of cycles, we
92
+ can use the ZZ hash in regular FiberSpawn to resume expired
93
+ fibers on an as-needed basis.
94
+
95
+ While we're at it, merge the keepalive-timeout class into the
96
+ heartbeat, there's no reason to have separate timers and
97
+ classes here.
98
+
99
+ commit 0766c1eb631190ee514a90e4d20a941f0a310054
100
+ Author: Eric Wong <normalperson@yhbt.net>
101
+ Date: Mon Dec 27 13:10:56 2010 -0800
102
+
103
+ t0019: add CPU usage test
104
+
105
+ This requires manual verification :<
106
+
107
+ commit d430bc3a481f897b4f515d5b7d0a0e239f8d2bb2
108
+ Author: Eric Wong <normalperson@yhbt.net>
109
+ Date: Mon Dec 27 13:10:55 2010 -0800
110
+
111
+ test-lib: fix bug in setting worker_connections
112
+
113
+ We need to be able to set this with keepalive_timeout
114
+ simultaneously.
115
+
116
+ commit 4e7ee4b8a451edf78b0eeac47b8a24c591986e91
117
+ Author: Eric Wong <normalperson@yhbt.net>
118
+ Date: Mon Dec 27 13:10:54 2010 -0800
119
+
120
+ t0015: even less racy fix
121
+
122
+ We need to ensure the first worker has started and is
123
+ running before attempting to signal the reload.
124
+
125
+ commit 2b85ea421197af84a13f6062b21ddcf61490ebcf
126
+ Author: Eric Wong <normalperson@yhbt.net>
127
+ Date: Mon Dec 27 08:57:31 2010 +0000
128
+
129
+ doc: misc cleanups and additions for RDoc
130
+
131
+ This is also our website, so we need to document the new
132
+ Cool.io-based concurrency options for users and point
133
+ existing Rev* users to it.
134
+
135
+ commit 87a38d1a5658938a3540b45ab04cc85a9135c8f0
136
+ Author: Eric Wong <normalperson@yhbt.net>
137
+ Date: Mon Dec 27 07:45:28 2010 +0000
138
+
139
+ t0015: increase reliability of test
140
+
141
+ The worker process may fork before the original process
142
+ is killed during daemonization.
143
+
144
+ commit 3a250fcfb9fcfa0ab3a8105821e670563025faa4
145
+ Author: Eric Wong <normalperson@yhbt.net>
146
+ Date: Mon Dec 27 07:18:49 2010 +0000
147
+
148
+ initial cool.io support
149
+
150
+ Cool.io is the new name for Rev. We'll continue to support Rev
151
+ until Cool.io breaks backwards compatibility. Rev may not be
152
+ supported if Cool.io is.
153
+
154
+ commit 2873361069dc2f8c793875316a0a2c9b8fa54761
155
+ Author: Eric Wong <normalperson@yhbt.net>
156
+ Date: Mon Dec 27 04:23:34 2010 +0000
157
+
158
+ fiber/io: avoid allocating Range objects for slicing
159
+
160
+ It's slightly faster this way, but string slicing sucks
161
+ anyways :<
162
+
163
+ commit 40c22b3f0a2ace6e4b51a39624ac5ed5ee3d0162
164
+ Author: Eric Wong <normalperson@yhbt.net>
165
+ Date: Mon Dec 27 03:56:30 2010 +0000
166
+
167
+ fiber/*: more efficient keepalive_timeout expiry
168
+
169
+ We can use the same interface as Rainbows::Fiber.sleep to avoid
170
+ blindly waking up readers at ever scheduler invocation.
171
+
172
+ commit abb3f7e057bd5fb0aa97cae1410ce2f55ba12b9c
173
+ Author: Eric Wong <normalperson@yhbt.net>
174
+ Date: Mon Dec 27 03:01:47 2010 +0000
175
+
176
+ fiber/base: use bare "select" where possible
177
+
178
+ Less visual noise
179
+
180
+ commit 2d25a86d1d17bd966eea59e5666e41d9da562811
181
+ Author: Eric Wong <normalperson@yhbt.net>
182
+ Date: Mon Dec 27 02:59:10 2010 +0000
183
+
184
+ thread_pool: avoid needless wakeups from select
185
+
186
+ No point in waking up when our ticker runs in a separate
187
+ thread.
188
+
189
+ commit a3d3d13711869d420b4473d492bd788ebe493053
190
+ Author: Eric Wong <normalperson@yhbt.net>
191
+ Date: Mon Dec 27 02:58:31 2010 +0000
192
+
193
+ thread_*: unindent
194
+
195
+ Hopefully this will make our code easier to follow.
196
+
197
+ commit 94b848a8f9120bce8b0abd776b1a9b7e2f4fa30d
198
+ Author: Eric Wong <normalperson@yhbt.net>
199
+ Date: Mon Dec 27 02:43:44 2010 +0000
200
+
201
+ introduce worker_yield method
202
+
203
+ This lets Rainbows! yield the current worker process
204
+ when busy in the hopes another worker will pick up the
205
+ slack. We can also override this for the single worker
206
+ process case later if people care enough.
207
+
208
+ commit a310302708faa19042282e94525544cfbb23eba5
209
+ Author: Eric Wong <normalperson@yhbt.net>
210
+ Date: Mon Dec 27 02:36:58 2010 +0000
211
+
212
+ writer_thread_spawn: factor out Client.quit
213
+
214
+ Self-documenting code is easier to follow
215
+
216
+ commit 6ae020c9ac483d822902b5d33f038f79b44d3a50
217
+ Author: Eric Wong <normalperson@yhbt.net>
218
+ Date: Mon Dec 27 02:30:58 2010 +0000
219
+
220
+ writer_thread_*: split out classes into separate files
221
+
222
+ Use a consistent "Client" naming to reduce confusion
223
+
224
+ commit e7d295fd8e3628eba7a1ba52e95b7dee11532e98
225
+ Author: Eric Wong <normalperson@yhbt.net>
226
+ Date: Mon Dec 27 02:20:00 2010 +0000
227
+
228
+ writer_thread_*: split out common socket_proxy code
229
+
230
+ Needless duplication sucks
231
+
232
+ commit 7f2cb1b56afda847c29e1e65fe0608a6f20a0fe6
233
+ Author: Eric Wong <normalperson@yhbt.net>
234
+ Date: Mon Dec 27 02:13:32 2010 +0000
235
+
236
+ writer_thread_*: unindent
237
+
238
+ commit a5ff497e57bc6e8793c38bdd94ea9f1cfefd17fd
239
+ Author: Eric Wong <normalperson@yhbt.net>
240
+ Date: Sun Dec 26 23:54:49 2010 +0000
241
+
242
+ revactor: split out tee_socket and use autoload
243
+
244
+ Some applications never need TeeSocket, and we don't have
245
+ to worry about thread-safety with Revactor.
246
+
247
+ commit c4d92b384dd3f926fa12eb704eeef663a9cb7b66
248
+ Author: Eric Wong <normalperson@yhbt.net>
249
+ Date: Sun Dec 26 23:52:43 2010 +0000
250
+
251
+ more :: prefix elimination
252
+
253
+ This should make things easier on the eyes.
254
+
255
+ commit 2e131bfd21f5ec5acc3c86233e5e292cec7aa67d
256
+ Author: Eric Wong <normalperson@yhbt.net>
257
+ Date: Sun Dec 26 23:52:02 2010 +0000
258
+
259
+ fiber/queue: unindent
260
+
261
+ This also cleans up some constant resolution for the root
262
+ Fiber class.
263
+
264
+ commit 712ef17547291fed37e79d37d0b6e0128ed43e0d
265
+ Author: Eric Wong <normalperson@yhbt.net>
266
+ Date: Sun Dec 26 23:41:51 2010 +0000
267
+
268
+ remove unnecessary "::" constant prefixing
269
+
270
+ It's ugly to look at.
271
+
272
+ commit 6733af0546a759b73fd63880e8ef2549caf4c4f2
273
+ Author: Eric Wong <normalperson@yhbt.net>
274
+ Date: Sun Dec 26 23:16:41 2010 +0000
275
+
276
+ never_block: simplify and split out code
277
+
278
+ alias_method is a mess, super is superb!
279
+
280
+ commit 20e8d57127f16da8e4242582dee3b99d54cbb729
281
+ Author: Eric Wong <normalperson@yhbt.net>
282
+ Date: Sun Dec 26 23:12:18 2010 +0000
283
+
284
+ event_machine: split out server and client classes
285
+
286
+ This should make things easier to find
287
+
288
+ commit a50c9d312b9d5274a95f2816b5f53a3738d0cb92
289
+ Author: Eric Wong <normalperson@yhbt.net>
290
+ Date: Sun Dec 26 22:48:33 2010 +0000
291
+
292
+ rev_thread_*: unindent and split out
293
+
294
+ This should make classes easier to find and hopefully make
295
+ our code easier to follow.
296
+
297
+ commit 6741aa27e4c35724b5306644d3a391fce415b0c7
298
+ Author: Eric Wong <normalperson@yhbt.net>
299
+ Date: Sun Dec 26 21:46:46 2010 +0000
300
+
301
+ rainbows/rev/* require/autoload cleanup
302
+
303
+ One line of code saved! We'll also avoid loading
304
+ DeferredChunkResponse which is rarely needed
305
+ (unlike DeferredResponse).
306
+
307
+ commit 869e0d5da8cbe8959983ed66e2b4c31dc7a37d92
308
+ Author: Eric Wong <normalperson@yhbt.net>
309
+ Date: Sun Dec 26 21:40:34 2010 +0000
310
+
311
+ rename rev/thread => rev/thread_client
312
+
313
+ While we're at it, unindent
314
+
315
+ commit c1655a501fc26f7100dd788b42a1914be833fea4
316
+ Author: Eric Wong <normalperson@yhbt.net>
317
+ Date: Sun Dec 26 21:33:21 2010 +0000
318
+
319
+ rev_thread_spawn: disable under Ruby 1.8
320
+
321
+ It still burns CPU at the first sign of doing anything
322
+ interesting, so stop it. Ruby 1.9 is the future :P
323
+
324
+ commit fb7d5dbf06f8ce92a23b50a0cc45be3e7b55fccd
325
+ Author: Eric Wong <normalperson@yhbt.net>
326
+ Date: Sun Dec 26 21:27:08 2010 +0000
327
+
328
+ GNUmakefile: fix packaging task
329
+
330
+ Oops
331
+
332
+ commit 7bfd7995fd403f80940e3f6ac36f9ae58b7040cb
333
+ Author: Eric Wong <normalperson@yhbt.net>
334
+ Date: Sun Dec 26 03:30:36 2010 +0000
335
+
336
+ avoid HttpParser#keepalive? and HttpParser#reset
337
+
338
+ The HttpParser#next? method will come with keepalive protection
339
+ for Rainbows!, which can prevent clients from monopolizing a
340
+ server with excessive pipelining/keepalive requests.
341
+
342
+ commit 92a11cdfe00c5e551388c2cc1a62bfc59d568c6f
343
+ Author: Eric Wong <normalperson@yhbt.net>
344
+ Date: Sun Dec 26 09:50:06 2010 +0000
345
+
346
+ bump Unicorn dependency
347
+
348
+ Unicorn 3.2.1 gives us an improved HttpParser#next? that
349
+ preserves state until the next HttpParser#parse call.
350
+
351
+ commit 17156f6f561c6d697a83e3b9beae2d58eb796428
352
+ Author: Eric Wong <normalperson@yhbt.net>
353
+ Date: Sun Dec 26 03:29:16 2010 +0000
354
+
355
+ rainbows/rev/*: uninident some more
356
+
357
+ This makes constant resolution more predictable, we hope.
358
+
359
+ commit 68accc9930b0653b702553790d4ccd626a8dfdfe
360
+ Author: Eric Wong <normalperson@yhbt.net>
361
+ Date: Sun Dec 26 03:09:47 2010 +0000
362
+
363
+ rev: split out Rainbows::Rev::Server
364
+
365
+ One file per class/module should be easier for new
366
+ hackers to find. Unindent rainbows/rev/core while
367
+ we're at it, too.
368
+
369
+ commit a35fd37ff0c81ca8130c18b7b77957bafe686f83
370
+ Author: Eric Wong <normalperson@yhbt.net>
371
+ Date: Sun Dec 26 03:00:11 2010 +0000
372
+
373
+ rev: unindent, needless autoload
374
+
375
+ Deferred* classes will get loaded anyways since
376
+ Rainbows::Rev::Client hit them in case statements.
377
+
378
+ commit 43e3d3f7a8dd2b184c8485469c2acff3dac34009
379
+ Author: Eric Wong <normalperson@yhbt.net>
380
+ Date: Fri Dec 24 08:52:55 2010 +0000
381
+
382
+ doc: switch documentation generation to wrongdoc
383
+
384
+ It is a common base so we can share documentation tasks
385
+ more easily with Unicorn and it ensures our RDoc no longer
386
+ has JavaScript in it!
387
+
388
+ commit 7e0dc42f7084e1719456a80b2e44049133c2e8b7
389
+ Author: Eric Wong <normalperson@yhbt.net>
390
+ Date: Mon Dec 20 00:54:17 2010 +0000
391
+
392
+ thread_timeout: fix bad comparison
393
+
394
+ This was causing unrelated requests to get killed every
395
+ +timeout+ seconds, instead of only the ones that were
396
+ running too long.
397
+
398
+ Noticed-by: ghazel@gmail.com
399
+ ref:
400
+ http://mid.gmane.org/AANLkTi=7OhyTwkHsp_rXU7Gp1PokihiQ9bJigpO-BfN6@mail.gmail.com
401
+
402
+ commit 886e0a006d9e8e9c586beae28ed4dc5097064e90
403
+ Author: Eric Wong <normalperson@yhbt.net>
404
+ Date: Mon Dec 20 03:41:48 2010 +0000
405
+
406
+ thread_timeout: avoid a threading bug under 1.9
407
+
408
+ Because of the lack of GVL-releasing syscalls in this branch
409
+ of the thread loop, we need Thread.pass to ensure other threads
410
+ get scheduled appropriately under 1.9. This is likely a threading
411
+ bug in 1.9 that warrants further investigation when we're in a
412
+ better mood.
413
+
414
+ commit 7e2bb251228a30c0d4e66029b20bbbf85bc99a09
415
+ Author: Eric Wong <normalperson@yhbt.net>
416
+ Date: Tue Dec 14 18:36:34 2010 -0800
417
+
418
+ FAQ: add a note about config.threadsafe!
419
+
420
+ At least one user ran into it:
421
+ http://mid.gmane.org/AANLkTikegPX2-6Q93++bz_aLt+9nLPJXjg+NkL8tDjeE@mail.gmail.com
422
+
423
+ commit 2bb3f8fd600bd0aabe5e4d7c3d1f99d745fc8f49
424
+ Author: Eric Wong <normalperson@yhbt.net>
425
+ Date: Thu Dec 9 17:14:04 2010 -0800
426
+
427
+ respect client_body_buffer_size in Unicorn 3.1.0
428
+
429
+ This is only needed for concurrency options that
430
+ do not use TeeInput, since TeeInput automatically
431
+ handles this for us.
432
+
433
+ commit af3629e6bd88b5744016a1c6217c00c37ef5a376
434
+ Author: Eric Wong <normalperson@yhbt.net>
435
+ Date: Thu Dec 9 14:42:18 2010 -0800
436
+
437
+ bump Unicorn dependency to 3.1.0
438
+
439
+ We'll be taking advantage of configurable
440
+ client_buffer_body_size soon.
441
+
442
+ commit 7b51a4b5e16734bae6fe60d180c3906f96235da4
443
+ Author: Eric Wong <normalperson@yhbt.net>
444
+ Date: Thu Dec 9 14:22:16 2010 -0800
445
+
446
+ thread_timeout: de-Struct-ify
447
+
448
+ Avoid exposing internals, it's also slightly faster to
449
+ access ivars directly rather than using method calls.
450
+
451
+ commit 6b750f5f952963009a2e6e8702fc8f3d8adc94ea
452
+ Author: Eric Wong <normalperson@yhbt.net>
453
+ Date: Wed Dec 8 18:35:27 2010 -0800
454
+
455
+ respect "rewindable_input false" in Unicorn config
456
+
457
+ This was completely overlooked for the Rainbows 2.0.x
458
+ releases.
459
+
460
+ commit 10d96a76a1ea4431dd10ba181d747169c22c1cec
461
+ Author: Eric Wong <normalperson@yhbt.net>
462
+ Date: Wed Dec 8 13:38:52 2010 -0800
463
+
464
+ t/*.sh: indentation fixes
465
+
466
+ We use real tabs for indenting shell code since it is not Ruby.
467
+
468
+ commit 1562a19a021a72a78ba495328d2d37ba0dc83b8c
469
+ Author: Eric Wong <normalperson@yhbt.net>
470
+ Date: Tue Dec 7 12:11:51 2010 -0800
471
+
472
+ rev+revactor: fix LARGE pipelined uploads
473
+
474
+ Large uploads behave differently with regard to buffering,
475
+ and there were bugs in the way the Rev and Revactor backends
476
+ handled uploads.
477
+
478
+ commit b4835c6d542c6369f2523ab68fc41b0202d7c6dc
479
+ Author: Eric Wong <normalperson@yhbt.net>
480
+ Date: Fri Dec 3 01:23:11 2010 +0000
481
+
482
+ Rainbows! 2.0.1 - upload pipelining fixes
483
+
484
+ For HTTP clients living on the edge and pipelining uploads, we
485
+ now fully support pipelined requests (as long as the application
486
+ consumes each request in its entirety).
487
+
488
+ commit c096e735efea5050b0559748633403f0387ea3b3
489
+ Author: Eric Wong <normalperson@yhbt.net>
490
+ Date: Fri Dec 3 01:12:08 2010 +0000
491
+
492
+ fix pipelining of requests with bodies
493
+
494
+ All synchronous models have this fixed in unicorn 3.0.1,
495
+ so only Rev and EventMachine-based concurrency models
496
+ require code changes.
497
+
498
+ commit 64889d9136fa5466269232c26a2f235dd763d8f0
499
+ Author: Eric Wong <normalperson@yhbt.net>
500
+ Date: Thu Dec 2 07:38:14 2010 +0000
501
+
502
+ ev_core: refactor and split cap_input out
503
+
504
+ Hopefully it makes more sense now and is easier to
505
+ digest for new hackers.
506
+
507
+ commit 945b5760d86b9dd00e65bd0625b98cf75f6a8257
508
+ Author: Eric Wong <normalperson@yhbt.net>
509
+ Date: Wed Dec 1 21:29:34 2010 -0800
510
+
511
+ ev_core: split out prepare_request_body
512
+
513
+ We may have other uses for this in the future...
514
+
515
+ commit 90789761f0cc78d3726f3a2eda1c5fe95c015ac2
516
+ Author: Eric Wong <normalperson@yhbt.net>
517
+ Date: Fri Nov 19 19:09:59 2010 -0800
518
+
519
+ Rainbows! 2.0.0 - minority rules!
520
+
521
+ This release is targeted at the minority of web applications
522
+ that deal heavily with uploads.
523
+
524
+ Thanks to Unicorn 3.x, we now support HTTP keepalive for
525
+ requests with bodies as long as the application consumes them.
526
+ Unicorn 3.x also allows disabling the rewindability requirement
527
+ of "rack.input" (in violation of the Rack 1.x spec).
528
+
529
+ The global client_body_max_size may also be applied per-endpoint
530
+ using the Rainbows::MaxBody middleware described in:
531
+
532
+ http://rainbows.rubyforge.org/Rainbows/MaxBody.html
533
+
534
+ commit c33878ac0f9f990aaa2054f8f00674d61bf5c848
535
+ Author: Eric Wong <normalperson@yhbt.net>
536
+ Date: Sat Nov 20 03:10:09 2010 +0000
537
+
538
+ tests: depend on Unicorn 3.0.0
539
+
540
+ Unicorn 3.0.0 is final and released, so we will use it in our
541
+ tests
542
+
543
+ commit a5986295bfb7bd7c44c863e4670f16481097c7fc
544
+ Author: Eric Wong <normalperson@yhbt.net>
545
+ Date: Fri Nov 19 18:55:06 2010 -0800
546
+
547
+ revactor: fix braindamaged commit/coding style
548
+
549
+ Oops, last commit was rushed
550
+
551
+ commit da9dfc1dece4fbcdf2a8e8ccdb4914ce4aa3a998
552
+ Author: Eric Wong <normalperson@yhbt.net>
553
+ Date: Fri Nov 19 18:39:02 2010 -0800
554
+
555
+ simpler keepalive check for synchronous models
556
+
557
+ Unicorn 3.x includes HttpParser#next? which will reset the
558
+ parser for keepalive requests without extra steps.
559
+
560
+ commit c6ffae22748bc22d5ef88fea2a3ca67f480ee74b
561
+ Author: Eric Wong <normalperson@yhbt.net>
562
+ Date: Fri Nov 19 10:19:45 2010 +0000
563
+
564
+ max_body: rewrite wrappers to be safer
565
+
566
+ To avoid denial-of-service attacks, the wrappers need to
567
+ intercept requests *before* they hit the memory allocator, so we
568
+ need to reimplement the read(all) and gets cases to use
569
+ smaller buffers whenever the application does not specify one.
570
+
571
+ commit 3cee07d750f678af92318c14110c803be3f9b97f
572
+ Author: Eric Wong <normalperson@yhbt.net>
573
+ Date: Fri Nov 19 10:19:44 2010 +0000
574
+
575
+ max_body: do not enable for RevThread* models
576
+
577
+ Those already use CapInput, just like the rest of the evented
578
+ Rainbows! world.
579
+
580
+ commit 00b854e37391322c05cc16115b245d855b4970be
581
+ Author: Eric Wong <normalperson@yhbt.net>
582
+ Date: Fri Nov 19 10:19:43 2010 +0000
583
+
584
+ upgrade to Kgio 2.x and Unicorn 3.x
585
+
586
+ Kgio 2.0.0 has a superior API and less likely to conflict or
587
+ blow up with other applications. Unicorn 3.x requires Kgio 2.x,
588
+ too.
589
+
590
+ commit 0f00424be24806791f2b253ddac6d35102842646
591
+ Author: Eric Wong <normalperson@yhbt.net>
592
+ Date: Wed Nov 17 10:06:45 2010 -0800
593
+
594
+ test_isolate: depend on newer Unicorn
595
+
596
+ It allows disabling rewindable input and contains
597
+ simpler code for upload processing.
598
+
599
+ commit 31cf77e7aa2f2e6065e7ace44e55c3f042b51f1b
600
+ Author: Eric Wong <normalperson@yhbt.net>
601
+ Date: Tue Nov 16 16:16:42 2010 -0800
602
+
603
+ reimplement client_max_body_size handlers
604
+
605
+ This allows the client_max_body_size implementation to not rely
606
+ on Unicorn::TeeInput internals, allowing it to be used with
607
+ Unicorn::StreamInput (or any other (nearly)
608
+ Rack::Lint-compatible input object).
609
+
610
+ commit 42747db815ad668b20849afb2a9dcdd1319713ae
611
+ Author: Eric Wong <normalperson@yhbt.net>
612
+ Date: Tue Nov 2 12:32:23 2010 -0700
613
+
614
+ avoid Errno::EAGAIN, harder
615
+
616
+ Errno::EAGAIN is still a problem under Ruby 1.9.2, so try harder
617
+ to avoid it and use kgio methods. Even when 1.9.3 is available,
618
+ kgio will still be faster as exceptions are slower than normal
619
+ return values.
620
+
621
+ commit 427ef4a2953a4b2d34f7dd89566a0cb5ee6e734d
622
+ Author: Eric Wong <normalperson@yhbt.net>
623
+ Date: Tue Nov 2 11:49:17 2010 -0700
624
+
625
+ avoid Kgio::WaitReadable/WaitWritable constants
626
+
627
+ The underlying symbolic names are easier to type and
628
+ recommended.
629
+
630
+ commit ed3a30dcfb5489447dec9c3f73e8bec9dbf7713a
631
+ Author: Eric Wong <normalperson@yhbt.net>
632
+ Date: Thu Nov 4 19:52:35 2010 -0700
633
+
634
+ process_client: fix attempted keepalive on HTTP 0.9
635
+
636
+ The long-term goal is to make the Unicorn API more terse when
637
+ handling keepalive.
638
+
639
+ commit 9f185041fb7af4cda21ba2d547fd4d16d9b2e453
640
+ Author: Eric Wong <normalperson@yhbt.net>
641
+ Date: Thu Oct 28 08:42:09 2010 +0000
642
+
643
+ Rainbows! 1.0.0 - internal cleanups
644
+
645
+ This release is merely a milestone in our evolving internal API.
646
+ Use of kgio may result in performance improvements under Ruby
647
+ 1.9.2 with non-blocking I/O-intensive workloads.
648
+
649
+ The only bugfix is that SIGHUP reloads restores defaults on
650
+ unset settings. A similar fix is included in Unicorn 2.0.0
651
+ as well.
652
+
653
+ commit 015635f877084cc05a9e6e4c1430c70279d0a04e
654
+ Author: Eric Wong <normalperson@yhbt.net>
655
+ Date: Thu Oct 28 08:40:12 2010 +0000
656
+
657
+ tests: avoid race conditions on reload tests
658
+
659
+ We need to ensure the old worker is really dead before sending
660
+ requests after reloading.
661
+
662
+ commit b06c6b3ac214bc598d499c994884113d5b106e90
663
+ Author: Eric Wong <normalperson@yhbt.net>
664
+ Date: Thu Oct 28 08:29:53 2010 +0000
665
+
666
+ t0018: wait for old worker to be reaped
667
+
668
+ On busy machines, old workers may not shutdown quickly
669
+ enough and may still be processing requests.
670
+
671
+ commit f84f138233be0607b0151a5a28c3f9190ba336a2
672
+ Author: Eric Wong <normalperson@yhbt.net>
673
+ Date: Thu Oct 28 08:20:37 2010 +0000
674
+
675
+ rev+event_machine: small cleanups with new parser API
676
+
677
+ These allow for small reductions in the amount of variables
678
+ we have to manage, more changes coming with later Unicorns.
679
+
680
+ commit c4579db76b9ed5b0286fad852e798e8a890f093c
681
+ Author: Eric Wong <normalperson@yhbt.net>
682
+ Date: Thu Oct 28 02:17:25 2010 +0000
683
+
684
+ HUP reload restores defaults on unset settings
685
+
686
+ For consistency, changed settings are reset back to
687
+ their default values if they are removed or commented
688
+ out from the config file.
689
+
690
+ commit 83644e02068311c7ff9cdbc63efd4764d1518138
691
+ Author: Eric Wong <normalperson@yhbt.net>
692
+ Date: Wed Oct 27 23:52:28 2010 +0000
693
+
694
+ use Unicorn 2.0.0 final
695
+
696
+ Unicorn 2.0.0 has CPU wakeup reductions.
697
+
698
+ commit 2b9503566759678c9fbd7b01d1b5f487854208db
699
+ Author: Eric Wong <normalperson@yhbt.net>
700
+ Date: Tue Oct 26 21:36:02 2010 +0000
701
+
702
+ Rakefile: updates for prereleases
703
+
704
+ We do prereleases, now.
705
+
706
+ commit a47cd4a7f392a76357ed4f3e458797ae1f9c8f25
707
+ Author: Eric Wong <normalperson@yhbt.net>
708
+ Date: Tue Oct 26 21:26:03 2010 +0000
709
+
710
+ Rainbows! 1.0.0pre1 - kinder, gentler I/O
711
+
712
+ Mostly internal changes for kgio (and Unicorn) integration.
713
+ There should be no (supported) user-visible changes from
714
+ Rainbows! 0.97.0. kgio should improve performance for
715
+ concurrency models that use non-blocking I/O internally,
716
+ especially under Ruby 1.9.2
717
+
718
+ commit 0298a6743f2cadf8c8e47a298c5b35505b74af46
719
+ Author: Eric Wong <normalperson@yhbt.net>
720
+ Date: Tue Oct 26 21:20:45 2010 +0000
721
+
722
+ gemspec: bump development dependency of Isolate
723
+
724
+ Might as well go with the latest and greatest,
725
+ it has saner defaults at least.
726
+
727
+ commit 567e6ce5dba5ad2cca2cca8c64123e27939bff2b
728
+ Author: Eric Wong <normalperson@yhbt.net>
729
+ Date: Tue Oct 26 21:13:10 2010 +0000
730
+
731
+ doc: RDoc updates
732
+
733
+ Once again we avoid documenting internals on the public
734
+ website and use code comments for other developers.
735
+
736
+ commit 894cb73887c106acc793f0317ee849ae215ead56
737
+ Author: Eric Wong <normalperson@yhbt.net>
738
+ Date: Mon Oct 25 22:15:47 2010 +0000
739
+
740
+ reduce dependency on IO#write_nonblock
741
+
742
+ kgio_trywrite is superior if it is available.
743
+
744
+ commit 4ee6e0dafeb1b7af28fa90ae27c1a1a04aa8e852
745
+ Author: Eric Wong <normalperson@yhbt.net>
746
+ Date: Sat Oct 23 00:42:04 2010 +0000
747
+
748
+ http_request: remove this (sub)class
749
+
750
+ It does not appear to be needed, for now, since the
751
+ parser and Unicorn::HttpRequest are one and the same.
752
+
753
+ commit 180485d49ea858f83ef2a28a9e07224aa514edc7
754
+ Author: Eric Wong <normalperson@yhbt.net>
755
+ Date: Fri Oct 22 16:21:03 2010 -0700
756
+
757
+ unindent most files
758
+
759
+ This simplifies and disambiguates most constant resolution
760
+ issues as well as lowering our identation level. Hopefully
761
+ this makes code easier to understand.
762
+
763
+ commit 41145ed4d335718ac43aec9313b7571a12fe96ee
764
+ Author: Eric Wong <normalperson@yhbt.net>
765
+ Date: Fri Oct 22 15:31:47 2010 -0700
766
+
767
+ local.mk.sample: remove testing under 1.9.1
768
+
769
+ Ruby 1.9.2 has been out for a while and is the stable
770
+ release nowadays.
771
+
772
+ commit b595ad7333ff85452b229674c6726e40d2cf7bb9
773
+ Author: Eric Wong <normalperson@yhbt.net>
774
+ Date: Fri Oct 22 18:55:46 2010 +0000
775
+
776
+ README: update copyright year
777
+
778
+ This project is over 1 year old!
779
+
780
+ commit 4a568eeb7d17885579790d0ae004f04aa13479cb
781
+ Author: Eric Wong <normalperson@yhbt.net>
782
+ Date: Fri Oct 22 02:50:09 2010 +0000
783
+
784
+ dev_fd_response: do not wrap for Fiber-aware IOs
785
+
786
+ Applications may use wait_readable-aware methods directly
787
+ to work with Rainbows!
788
+
789
+ commit 6d46978bdc8d2ee4263431ecdcada53389b12597
790
+ Author: Eric Wong <normalperson@yhbt.net>
791
+ Date: Fri Oct 22 02:51:18 2010 +0000
792
+
793
+ fiber_{pool,spawn}: unindent
794
+
795
+ Reduces confusion for constant resolution/scoping rules
796
+ and lowers LoC.
797
+
798
+ commit 03806d2b44c2d3cee75258ee9e83d671e751baeb
799
+ Author: Eric Wong <normalperson@yhbt.net>
800
+ Date: Fri Oct 22 02:38:40 2010 +0000
801
+
802
+ fiber_pool: no need for old Fiber::IO
803
+
804
+ Rainbows::Client takes care of the I/O wait/read-ability
805
+ for us already.
806
+
807
+ commit 15631717fce044fbad2f386a7b1c7daf4bdd83d2
808
+ Author: Eric Wong <normalperson@yhbt.net>
809
+ Date: Thu Oct 21 16:25:39 2010 -0700
810
+
811
+ code shuffling for kgio
812
+
813
+ Despite the large number of changes, most of it is code
814
+ movement here.
815
+
816
+ commit d4a2b5dd2b85f4b2d3bb120ee1e1b0dde31bc25c
817
+ Author: Eric Wong <normalperson@yhbt.net>
818
+ Date: Wed Oct 20 17:48:58 2010 -0700
819
+
820
+ unicorn 2.x updates + kgio
821
+
822
+ We get basic internal API changes from Unicorn,
823
+ code simplifications coming next.
824
+
825
+ commit a085ba3586756ac1f778d2862f75889de2449b0e
826
+ Author: Eric Wong <normalperson@yhbt.net>
827
+ Date: Wed Oct 20 17:48:57 2010 -0700
828
+
829
+ http_server: more descriptive error for debugging
830
+
831
+ Sometimes we have stupid syntax or constant resolution
832
+ errors in our code.
833
+
834
+ commit ad821f70a2488a91f2be1ac53cb2e64f50743989
835
+ Author: Eric Wong <normalperson@yhbt.net>
836
+ Date: Tue Sep 28 17:40:01 2010 -0700
837
+
838
+ start using kgio library
839
+
840
+ It removes the burden of byte slicing and setting file
841
+ descriptor flags. In some cases, we can remove unnecessary
842
+ peeraddr calls, too.
843
+
844
+ commit 11c75ec06ce72cea0c760161dc01a196500aa293
845
+ Author: Eric Wong <normalperson@yhbt.net>
846
+ Date: Fri Sep 17 08:55:35 2010 +0000
847
+
848
+ event_machine: remove unnecessary "return"
849
+
850
+ Noise is bad.