rainbows 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.