unicorn 3.6.0 → 4.0.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 (58) hide show
  1. data/.document +1 -0
  2. data/.manifest +13 -0
  3. data/ChangeLog +783 -1
  4. data/DESIGN +0 -8
  5. data/Documentation/GNUmakefile +1 -1
  6. data/GIT-VERSION-FILE +1 -1
  7. data/GIT-VERSION-GEN +1 -1
  8. data/GNUmakefile +2 -2
  9. data/HACKING +11 -0
  10. data/KNOWN_ISSUES +2 -2
  11. data/LATEST +24 -24
  12. data/Links +53 -0
  13. data/NEWS +66 -0
  14. data/PHILOSOPHY +49 -49
  15. data/Sandbox +13 -4
  16. data/TODO +0 -2
  17. data/TUNING +31 -9
  18. data/bin/unicorn +2 -1
  19. data/bin/unicorn_rails +2 -1
  20. data/examples/big_app_gc.rb +2 -33
  21. data/examples/nginx.conf +17 -4
  22. data/ext/unicorn_http/ext_help.h +16 -0
  23. data/ext/unicorn_http/extconf.rb +1 -0
  24. data/ext/unicorn_http/global_variables.h +9 -3
  25. data/ext/unicorn_http/unicorn_http.c +357 -259
  26. data/ext/unicorn_http/unicorn_http.rl +148 -50
  27. data/lib/unicorn/configurator.rb +36 -8
  28. data/lib/unicorn/const.rb +5 -3
  29. data/lib/unicorn/http_request.rb +1 -3
  30. data/lib/unicorn/http_server.rb +82 -95
  31. data/lib/unicorn/oob_gc.rb +61 -50
  32. data/lib/unicorn/socket_helper.rb +23 -8
  33. data/lib/unicorn/worker.rb +45 -4
  34. data/lib/unicorn.rb +8 -6
  35. data/script/isolate_for_tests +4 -2
  36. data/t/broken-app.ru +12 -0
  37. data/t/heartbeat-timeout.ru +12 -0
  38. data/t/oob_gc.ru +21 -0
  39. data/t/oob_gc_path.ru +21 -0
  40. data/t/t0001-reload-bad-config.sh +1 -0
  41. data/t/t0002-parser-error.sh +64 -1
  42. data/t/t0004-heartbeat-timeout.sh +69 -0
  43. data/t/t0009-broken-app.sh +56 -0
  44. data/t/t0019-max_header_len.sh +49 -0
  45. data/t/t0020-at_exit-handler.sh +49 -0
  46. data/t/t9001-oob_gc.sh +47 -0
  47. data/t/t9002-oob_gc-path.sh +75 -0
  48. data/test/benchmark/stack.ru +8 -0
  49. data/test/unit/test_droplet.rb +28 -0
  50. data/test/unit/test_http_parser.rb +60 -4
  51. data/test/unit/test_http_parser_ng.rb +54 -0
  52. data/test/unit/test_response.rb +1 -1
  53. data/test/unit/test_server.rb +1 -1
  54. data/test/unit/test_signals.rb +1 -1
  55. data/test/unit/test_socket_helper.rb +8 -0
  56. data/test/unit/test_upload.rb +1 -1
  57. data/unicorn.gemspec +3 -2
  58. metadata +44 -16
data/ChangeLog CHANGED
@@ -1,5 +1,749 @@
1
- ChangeLog from http://bogomips.org/unicorn.git (v1.1.5..v3.6.0)
1
+ ChangeLog from http://bogomips.org/unicorn.git (v1.1.5..v4.0.0)
2
2
 
3
+ commit fb8bb4469849fa2b2241152aea7e9e82bd3cbcc8
4
+ Author: Eric Wong <normalperson@yhbt.net>
5
+ Date: Mon Jun 27 08:12:58 2011 +0000
6
+
7
+ unicorn 4.0.0 - for mythical hardware!
8
+
9
+ A single Unicorn instance may manage more than 1024 workers
10
+ without needing privileges to modify resource limits. As a
11
+ result of this, the "raindrops"[1] gem/library is now a required
12
+ dependency.
13
+
14
+ TCP socket defaults now favor low latency to mimic UNIX domain
15
+ socket behavior (tcp_nodelay: true, tcp_nopush: false). This
16
+ hurts throughput, users who want to favor throughput should
17
+ specify "tcp_nodelay: false, tcp_nopush: true" in the listen
18
+ directive.
19
+
20
+ Error logging is more consistent and all lines should be
21
+ formatted correctly in backtraces. This may break the
22
+ behavior of some log parsers.
23
+
24
+ The call stack is smaller and thus easier to examine backtraces
25
+ when debugging Rack applications.
26
+
27
+ There are some internal API changes and cleanups, but none that
28
+ affect applications designed for Rack. See "git log v3.7.0.."
29
+ for details.
30
+
31
+ For users who cannot install kgio[2] or raindrops, Unicorn 1.1.x
32
+ remains supported indefinitely. Unicorn 3.x will remain
33
+ supported if there is demand. We expect raindrops to introduce
34
+ fewer portability problems than kgio did, however.
35
+
36
+ [1] http://raindrops.bogomips.org/
37
+ [2] http://bogomips.org/kgio/
38
+
39
+ commit 4785db8cf19899756c4a79462fed861a1d1bd96c
40
+ Author: Eric Wong <normalperson@yhbt.net>
41
+ Date: Mon Jun 27 08:46:28 2011 +0000
42
+
43
+ slightly faster worker process spawning
44
+
45
+ It's still O(n) since we don't maintain a reverse mapping of
46
+ spawned processes, but at least we avoid the extra overhead of
47
+ creating an array every time.
48
+
49
+ commit 441bb8ab48f15f583b82a3f8520648a4694a198f
50
+ Author: Eric Wong <normalperson@yhbt.net>
51
+ Date: Sat Jun 25 22:40:20 2011 +0000
52
+
53
+ reenable heartbeat checking for idle workers
54
+
55
+ Some applications/libraries may launch background threads which
56
+ can lock up the process. So we can't disable heartbeat checking
57
+ just because the main thread is sleeping. This also has the
58
+ side effect of reducing master process wakeups when all workers
59
+ are idle.
60
+
61
+ commit 63bcecf48994aa9afe6dc2890efe3ba4b0696bbf
62
+ Author: Eric Wong <normalperson@yhbt.net>
63
+ Date: Fri Jun 24 08:17:02 2011 +0000
64
+
65
+ test with latest kgio and rack versions
66
+
67
+ We'll continue to support older versions, but make
68
+ sure things on the latest ones work.
69
+
70
+ commit 079eb70692fcda9b4bcf572319434ffa7f9e9849
71
+ Author: Eric Wong <normalperson@yhbt.net>
72
+ Date: Fri Jun 24 07:19:22 2011 +0000
73
+
74
+ allow multiline comments in config.ru
75
+
76
+ This matches the latest Rack behavior.
77
+
78
+ We can't just use Rack::Builder.parse_file because our option
79
+ parser logic is slightly different and incompatible.
80
+
81
+ ref: rack commit d31cf2b7c0c77c04510c08d95776315ceb24ba54
82
+
83
+ commit b3b6b0dff19f8a22a96525bba22bf061d03c3fc5
84
+ Author: Eric Wong <normalperson@yhbt.net>
85
+ Date: Thu Jun 23 05:12:08 2011 +0000
86
+
87
+ http_server: avoid race conditions on SIGQUIT
88
+
89
+ We don't want the Worker#tick= assignment to trigger after we
90
+ accept a client, since we'd drop that request when we raise the
91
+ exception that breaks us out of the worker loop.
92
+
93
+ Also, we don't want to enter IO.select with an empty LISTENERS
94
+ array so we can fail with IOError or Errno::EBADF.
95
+
96
+ commit fbe48964d79f3d592f4f75960c5940add9ccf22a
97
+ Author: Eric Wong <normalperson@yhbt.net>
98
+ Date: Wed Jun 22 07:48:36 2011 +0000
99
+
100
+ http_server: remove unused variable
101
+
102
+ A leftover from the fchmod() days
103
+
104
+ commit 1a2dc92e7ff92157aa12e2c8a8a09ec0d56e0eb6
105
+ Author: Eric Wong <normalperson@yhbt.net>
106
+ Date: Wed Jun 22 02:06:46 2011 +0000
107
+
108
+ gemspec: fix raindrops dependency
109
+
110
+ Oops, I suck at Ruby :x
111
+
112
+ commit de142bc61f714392b0902b6e66a31c34ba223cdb
113
+ Author: Eric Wong <normalperson@yhbt.net>
114
+ Date: Wed Jun 22 02:05:20 2011 +0000
115
+
116
+ TODO: remove scalability to >= 1024 workers item
117
+
118
+ We can do it!
119
+
120
+ commit b08410facbccf96c67822a92888de0bc1910390e
121
+ Author: Eric Wong <normalperson@yhbt.net>
122
+ Date: Fri Jun 17 08:59:02 2011 +0000
123
+
124
+ test_http_parser: fix for URI too long errors (#3)
125
+
126
+ The random garbage generator may occasionally generate URIs that
127
+ are too long and cause the URI-specific error to be raised
128
+ instead of the generic parser error we recently introduced.
129
+
130
+ Follow-up-to: commit 742c4d77f179a757dbcb1fa350f9d75b757acfc7
131
+
132
+ commit 5f478f5a9a58f72c0a844258b8ee614bf24ea9f7
133
+ Author: Eric Wong <normalperson@yhbt.net>
134
+ Date: Fri Jun 17 08:54:37 2011 +0000
135
+
136
+ error logging is more consistent
137
+
138
+ Backtraces are now formatted properly (with timestamps) and
139
+ exceptions will be logged more consistently and similar to
140
+ Logger defaults:
141
+
142
+ "#{exc.message} (#{e.class})"
143
+ backtrace.each { |line| ... }
144
+
145
+ This may break some existing monitoring scripts, but errors
146
+ will be more standardized and easier to check moving forward.
147
+
148
+ commit fa7ce0a6a755cb71a30417478fb797ee7b8d94b5
149
+ Author: Eric Wong <normalperson@yhbt.net>
150
+ Date: Fri Jun 17 07:32:17 2011 +0000
151
+
152
+ add broken app test from Rainbows!
153
+
154
+ "app error" is more correct, and consistent with Rainbows!
155
+
156
+ commit 593deb92e8ebd4e77e482c567d97b6ee496ac378
157
+ Author: Eric Wong <normalperson@yhbt.net>
158
+ Date: Thu Jun 16 23:57:31 2011 +0000
159
+
160
+ ensure at_exit handlers run on graceful shutdown
161
+
162
+ rescuing from SystemExit and exit()-ing again is ugly, but
163
+ changes made to lower stack depth positively affect _everyone_
164
+ so we'll tolerate some ugliness here.
165
+
166
+ We'll need to disable graceful exit for some tests, too...
167
+
168
+ commit a0c59adf71506b8808de276b1288a319424ee71a
169
+ Author: Eric Wong <normalperson@yhbt.net>
170
+ Date: Thu Jun 16 22:54:40 2011 +0000
171
+
172
+ replace fchmod()-based heartbeat with raindrops
173
+
174
+ This means we no longer waste an extra file descriptor per
175
+ worker process in the master. Now there's no need to set a
176
+ higher file descriptor limit for systems running >= 1024
177
+ workers.
178
+
179
+ commit 95f543a9583e58c56b1c480df84b4b88e6669403
180
+ Author: Eric Wong <normalperson@yhbt.net>
181
+ Date: Thu Jun 16 23:11:28 2011 +0000
182
+
183
+ add heartbeat timeout test from Rainbows!
184
+
185
+ Just in case we break anything
186
+
187
+ commit 4beeb52b1c52ea4486dea13cebe2a8438a9f2139
188
+ Author: Eric Wong <normalperson@yhbt.net>
189
+ Date: Wed Jun 15 01:10:07 2011 +0000
190
+
191
+ memory reductions in worker process
192
+
193
+ There's absolutely no need to keep the OptionParser around in
194
+ worker processes.
195
+
196
+ commit e9e7a1c7c1778ed7cd7c724b26362d1f89b2801c
197
+ Author: Eric Wong <normalperson@yhbt.net>
198
+ Date: Wed Jun 15 00:56:47 2011 +0000
199
+
200
+ test_http_parser: fix for URI too long errors (again)
201
+
202
+ The random garbage generator may occasionally generate URIs that
203
+ are too long and cause the URI-specific error to be raised
204
+ instead of the generic parser error we recently introduced.
205
+
206
+ Follow-up-to: commit 742c4d77f179a757dbcb1fa350f9d75b757acfc7
207
+
208
+ commit a7d9eb03bf3ac554854990018a67f34c2221fb20
209
+ Author: Eric Wong <normalperson@yhbt.net>
210
+ Date: Wed Jun 15 00:53:45 2011 +0000
211
+
212
+ http_server: kill another stack frame off
213
+
214
+ We always know we have zero workers at startup, so we don't
215
+ need to check before hand. SIGHUP users may suffer a small
216
+ performance decrease as a result, but there's not much we
217
+ can do about it.
218
+
219
+ commit f8953ce747bd35b2008fc3daa040b89002a3133e
220
+ Author: Eric Wong <normalperson@yhbt.net>
221
+ Date: Wed Jun 15 00:47:25 2011 +0000
222
+
223
+ http_server: factor out inherit_listeners! method
224
+
225
+ This should be easier to understand and reduces garbage on
226
+ stack, too.
227
+
228
+ commit 6aa423454d7c3926297426fc22d23c88531bd15a
229
+ Author: Eric Wong <normalperson@yhbt.net>
230
+ Date: Wed Jun 15 00:45:37 2011 +0000
231
+
232
+ test_response: httpdate is low resolution
233
+
234
+ It may return the previous second
235
+
236
+ commit 63e421d82ac6d838f9b8b02d4a727bf6f783e7b6
237
+ Author: Eric Wong <normalperson@yhbt.net>
238
+ Date: Wed Jun 15 00:39:37 2011 +0000
239
+
240
+ remove BasicSocket.do_not_reverse_lookup setting
241
+
242
+ kgio never does reverse lookup
243
+
244
+ commit 12024a6268d4e96fcf96df33fb7d82eaec9c16b1
245
+ Author: Eric Wong <normalperson@yhbt.net>
246
+ Date: Wed Jun 15 00:20:26 2011 +0000
247
+
248
+ http: delay CoW string invalidations in filter_body
249
+
250
+ Not all invocations of filter_body will trigger CoW on the
251
+ given destination string. We can also avoid an unnecessary
252
+ rb_str_set_len() in the non-chunked path, too.
253
+
254
+ commit d91ca210615432bdad3ee70c08908ea7064c6b95
255
+ Author: Eric Wong <normalperson@yhbt.net>
256
+ Date: Wed Jun 15 00:15:42 2011 +0000
257
+
258
+ http: remove tainting flag
259
+
260
+ Needless line noise, kgio doesn't support tainting anyways.
261
+
262
+ commit c719497c6db220a9f58c71970f2370cb2e6c99c3
263
+ Author: Eric Wong <normalperson@yhbt.net>
264
+ Date: Wed Jun 15 00:09:32 2011 +0000
265
+
266
+ http_server: get rid of EINTR checks
267
+
268
+ Ruby IO.select never raises that, actually
269
+
270
+ commit 742c4d77f179a757dbcb1fa350f9d75b757acfc7
271
+ Author: Eric Wong <normalperson@yhbt.net>
272
+ Date: Wed Jun 15 00:08:03 2011 +0000
273
+
274
+ test_http_parser: fix for URI too long errors
275
+
276
+ The random garbage generator may occasionally generate URIs that
277
+ are too long and cause the URI-specific error to be raised
278
+ instead of the generic parser error we recently introduced.
279
+
280
+ commit 20c0f28cf60f164c9788b694625bce22962464f3
281
+ Author: Eric Wong <normalperson@yhbt.net>
282
+ Date: Wed Jun 15 00:01:32 2011 +0000
283
+
284
+ http_server: further reduce stack usage for app.call
285
+
286
+ By avoid Array#each
287
+
288
+ commit ddcea26976f24dda8a0cd65022065100bb40fbb7
289
+ Author: Eric Wong <normalperson@yhbt.net>
290
+ Date: Tue Jun 14 23:49:57 2011 +0000
291
+
292
+ http_server: small cleanups for attr assignments
293
+
294
+ ivar references using @ are slightly faster than calling
295
+ attribute methods.
296
+
297
+ commit f1d8dd94122395cd7b072aeec8942f2cd6b8ca99
298
+ Author: Eric Wong <normalperson@yhbt.net>
299
+ Date: Tue Jun 14 23:25:43 2011 +0000
300
+
301
+ http_server: do not rescue from proper exits
302
+
303
+ Oops, it messes logging up badly.
304
+
305
+ commit 2f3c135b15e6603e71bb9d6d054e5cd606c7b2b6
306
+ Author: Eric Wong <normalperson@yhbt.net>
307
+ Date: Tue Jun 14 00:51:01 2011 +0000
308
+
309
+ http: fix documentation for dechunk!
310
+
311
+ chunk_ready! was my original name for it, but I'm indecisive
312
+ when it comes to naming things.
313
+
314
+ commit c297fde2000dcc8bdf7cb9f912fb2ea07be1c282
315
+ Author: Eric Wong <normalperson@yhbt.net>
316
+ Date: Mon Jun 13 23:42:54 2011 +0000
317
+
318
+ http: dechunk! method to enter dechunk mode
319
+
320
+ This allows one to enter the dechunker without parsing
321
+ HTTP headers beforehand. Since we skipped header parsing,
322
+ trailer parsing is not supported since we don't know
323
+ what trailers might be (to our knowledge, nobody uses trailers
324
+ anyways)
325
+
326
+ commit 131c241840990753f7b75344092058ef7434ea8b
327
+ Author: Eric Wong <normalperson@yhbt.net>
328
+ Date: Mon Jun 13 22:35:18 2011 +0000
329
+
330
+ http: document reasoning for memcpy in filter_body
331
+
332
+ copy-on-write behavior doesn't help you if your common
333
+ use case triggers copies.
334
+
335
+ commit 4aa8fd1322ccb46fc58a4f26ca111a03c1720c7d
336
+ Author: Eric Wong <normalperson@yhbt.net>
337
+ Date: Mon Jun 13 22:18:30 2011 +0000
338
+
339
+ http: rename variables in filter_body implementation
340
+
341
+ Makes things easier-to-understand since it's based on memcpy()
342
+
343
+ commit b1d8d3de991ebc5b7d655f2e8a1294129021db8a
344
+ Author: Eric Wong <normalperson@yhbt.net>
345
+ Date: Mon Jun 13 22:17:14 2011 +0000
346
+
347
+ change TCP defaults to favor low latency
348
+
349
+ These TCP settings are a closer match to the behavior of
350
+ Unix domain sockets and what users expect for fast streaming
351
+ responses even if nginx can't provide them just now...
352
+
353
+ commit c1cac62571b543ac8e9f7203f8c315bb75516a20
354
+ Author: Eric Wong <normalperson@yhbt.net>
355
+ Date: Mon Jun 13 21:44:24 2011 +0000
356
+
357
+ gemspec: bump kgio dependency to ~> 2.4
358
+
359
+ kgio 2.4.1 portability should be better than 2.3, so
360
+ less user confusion and push them towards 2.4
361
+
362
+ commit 5d2284afdc2d4f4ff122394ae5fd78a32cb8c09e
363
+ Author: Eric Wong <normalperson@yhbt.net>
364
+ Date: Fri Jun 10 23:54:47 2011 +0000
365
+
366
+ runtime stack size reductions
367
+
368
+ This reduces the size of `caller` by 5 frames,
369
+ which should make backtraces easier-to-read, raising
370
+ exceptions less expensive, and reduce GC runtime.
371
+
372
+ commit 987b9496171b090e62de488ddc7b9a175c4c8d33
373
+ Author: Eric Wong <normalperson@yhbt.net>
374
+ Date: Fri Jun 10 23:44:10 2011 +0000
375
+
376
+ test/benchmark/stack.ru: app for measuring stack depth
377
+
378
+ Stack depth affects Ruby GC performance, so lowering it
379
+ makes sense
380
+
381
+ commit 1c033dfd66c713afb05911e5e220adb7fc4ddc17
382
+ Author: Eric Wong <normalperson@yhbt.net>
383
+ Date: Thu Jun 9 13:36:20 2011 -0700
384
+
385
+ unicorn 3.7.0 - minor feature update
386
+
387
+ * miscellaneous documentation improvements
388
+ * return 414 (instead of 400) for Request-URI Too Long
389
+ * strip leading and trailing linear whitespace in header values
390
+
391
+ User-visible improvements meant for Rainbows! users:
392
+
393
+ * add :ipv6only "listen" option (same as nginx)
394
+
395
+ commit c3880bb0cc00821d1715a7dd94b0b76a03a7ace0
396
+ Author: Eric Wong <normalperson@yhbt.net>
397
+ Date: Tue Jun 7 13:54:18 2011 -0700
398
+
399
+ configurator: add :ipv6only directive
400
+
401
+ Enabling this flag for an IPv6 TCP listener allows users to
402
+ specify IPv6-only listeners regardless of the OS default.
403
+ This should be interest to Rainbows! users.
404
+
405
+ commit 0dc56fd03ea478ae054e3d0398703f43e017723b
406
+ Author: Eric Wong <normalperson@yhbt.net>
407
+ Date: Tue Jun 7 09:56:30 2011 -0700
408
+
409
+ build: ensure gem and tgz targets build manpages
410
+
411
+ Original patch by Hongli Lai <hongli@phusion.nl>:
412
+
413
+ > >From bfefc2cf0efb0913a42862886363b3140dcdbb2a Mon Sep 17 00:00:00 2001
414
+ > From: Hongli Lai (Phusion) <hongli@phusion.nl>
415
+ > Date: Mon, 6 Jun 2011 13:39:00 +0200
416
+ > Subject: [PATCH] Ensure that 'make gem' builds the documentation too.
417
+ >
418
+ > If autogenerated documentation files, like man pages, don't exist then
419
+ > 'make gem' will fail, complaining that some files are not found. By
420
+ > depending the 'gem' target on the 'doc' target we ensure that 'make gem'
421
+ > always works.
422
+ >
423
+ > Signed-off-by: Hongli Lai (Phusion) <hongli@phusion.nl>
424
+
425
+ ref: http://mid.gmane.org/4DED0EE2.7040400@phusion.nl
426
+
427
+ commit 6eefc641c84eaa86cb2be4a2b1983b15efcbfae1
428
+ Author: Eric Wong <normalperson@yhbt.net>
429
+ Date: Tue Jun 7 09:38:34 2011 -0700
430
+
431
+ examples/nginx.conf: better wording for ipv6only comment
432
+
433
+ Oops.
434
+
435
+ commit 32b340b88915ec945ebdbfa11b7da242860a6f44
436
+ Author: Eric Wong <normalperson@yhbt.net>
437
+ Date: Mon Jun 6 19:15:36 2011 -0700
438
+
439
+ examples/nginx.conf: add ipv6only comment
440
+
441
+ IPv4-mapped-IPv6 addresses are fugly.
442
+
443
+ commit f4b9c1cb92711a62ae047368d7694c5050d27f2c
444
+ Author: Eric Wong <normalperson@yhbt.net>
445
+ Date: Mon Jun 6 10:00:36 2011 -0700
446
+
447
+ Documentation: remove --sanitize-html for pandoc
448
+
449
+ pandoc 1.8 no longer has this.
450
+
451
+ commit 8e8781aa7002079ad066c11d271b98fc29f225dd
452
+ Author: Hongli Lai (Phusion) <hongli@phusion.nl>
453
+ Date: Mon Jun 6 13:36:57 2011 +0200
454
+
455
+ Document the method for building the Unicorn gem.
456
+
457
+ Signed-off-by: Hongli Lai (Phusion) <hongli@phusion.nl>
458
+
459
+ commit 6e550cabdafd2cb0fcd1617f8815a732e79af670
460
+ Author: Eric Wong <normalperson@yhbt.net>
461
+ Date: Mon May 23 23:59:53 2011 +0000
462
+
463
+ isolate_for_tests: use rake 0.8.7
464
+
465
+ Rails 3.0.0 can't use Rake 0.9.0 it seems.
466
+
467
+ commit 3e8971f3998249c58c9958815e0f17a04256ef9f
468
+ Author: Eric Wong <normalperson@yhbt.net>
469
+ Date: Mon May 23 23:59:31 2011 +0000
470
+
471
+ gemspec: use latest Isolate (3.1)
472
+
473
+ It's required for RubyGems 1.8.x
474
+
475
+ commit 67e1fa9f9535ad009d538b8189bb3bdec0e5f79c
476
+ Author: Eric Wong <normalperson@yhbt.net>
477
+ Date: Mon May 23 21:53:19 2011 +0000
478
+
479
+ http: call rb_str_modify before rb_str_resize
480
+
481
+ Ruby 1.9.3dev (trunk) requires it if the string size
482
+ is unchanged.
483
+
484
+ commit 1b31c40997ff8b932a457275e9a2f219de1d32c8
485
+ Author: Eric Wong <normalperson@yhbt.net>
486
+ Date: Mon May 23 21:04:56 2011 +0000
487
+
488
+ strip trailing and leading linear whitespace in headers
489
+
490
+ RFC 2616, section 4.2:
491
+ > The field-content does not include any leading or trailing LWS:
492
+ > linear white space occurring before the first non-whitespace
493
+ > character of the field-value or after the last non-whitespace
494
+ > character of the field-value. Such leading or trailing LWS MAY be
495
+ > removed without changing the semantics of the field value. Any LWS
496
+ > that occurs between field-content MAY be replaced with a single SP
497
+ > before interpreting the field value or forwarding the message
498
+ > downstream.
499
+
500
+ commit 947704e3f8e67b8262815838e87b331802c7ba67
501
+ Author: Eric Wong <normalperson@yhbt.net>
502
+ Date: Mon May 23 18:22:44 2011 +0000
503
+
504
+ doc: add Links page to help folks find relevant info
505
+
506
+ Older announcements on our mailing list could be harder
507
+ to find.
508
+
509
+ commit 66be289901508d5a6ed092db81ec96815c42d21d
510
+ Author: Eric Wong <normalperson@yhbt.net>
511
+ Date: Mon May 23 18:21:50 2011 +0000
512
+
513
+ GNUmakefile: locale-independent grep invocation
514
+
515
+ Otherwise it could casefold and we don't want that.
516
+
517
+ commit c20077db941cc969fb3721c7527d37a99367f220
518
+ Author: Eric Wong <normalperson@yhbt.net>
519
+ Date: Sun May 8 02:39:42 2011 +0000
520
+
521
+ doc: PHILOSOPHY: formatting fixes
522
+
523
+ No need to list things inside preformatted text
524
+
525
+ commit 77a951c5da518dda471282635c98f3b572ca15db
526
+ Author: Eric Wong <normalperson@yhbt.net>
527
+ Date: Thu May 5 16:42:26 2011 -0700
528
+
529
+ http_parser: add max_header_len accessor
530
+
531
+ Rainbows! wants to be able to lower this eventually...
532
+
533
+ commit 733cb68e444a6f324bb1ffda3839da98ef010c74
534
+ Author: Eric Wong <normalperson@yhbt.net>
535
+ Date: Thu May 5 16:40:42 2011 -0700
536
+
537
+ t0002-parser-error: fix race conditions
538
+
539
+ "wait" needs to be done in the outside shell because
540
+ the subshell could still be exiting when we grep.
541
+
542
+ commit 39ffd5590e4b5d2114215854deec848f849e9e87
543
+ Author: Eric Wong <normalperson@yhbt.net>
544
+ Date: Wed May 4 17:59:48 2011 -0700
545
+
546
+ doc: remove redundant "of" typo
547
+
548
+ commit 1b0ee5826ef146a3e2647c40f3bc929d51d1b442
549
+ Author: Eric Wong <normalperson@yhbt.net>
550
+ Date: Wed May 4 17:04:51 2011 -0700
551
+
552
+ http_parser: new add_parse method
553
+
554
+ Combines the following sequence:
555
+
556
+ http_parser.buf << socket.readpartial(0x4000)
557
+ http_parser.parse
558
+
559
+ Into:
560
+
561
+ http_parser.add_parse(socket.readpartial(0x4000))
562
+
563
+ It was too damn redundant otherwise...
564
+
565
+ commit f81aa02448b615c4d5fc4f6544c53289dae9d2ec
566
+ Author: Eric Wong <normalperson@yhbt.net>
567
+ Date: Wed May 4 16:41:36 2011 -0700
568
+
569
+ return 414 for URI length violations
570
+
571
+ There's an HTTP status code allocated for it in
572
+ <http://www.iana.org/assignments/http-status-codes>, so
573
+ return that instead of 400.
574
+
575
+ commit 3a76dc40dda91a3804276fcc73260bb2a529c034
576
+ Author: Eric Wong <normalperson@yhbt.net>
577
+ Date: Sat Apr 30 11:09:32 2011 -0700
578
+
579
+ Sandbox: update doc for latest Bundler versions
580
+
581
+ Bundler 1.0.x is much improved :)
582
+
583
+ commit f848f632a81cf8ebc977592cbf9a45d84a69f306
584
+ Author: Eric Wong <normalperson@yhbt.net>
585
+ Date: Sat Apr 30 06:34:52 2011 +0000
586
+
587
+ unicorn 3.6.2 - fix Unicorn::OobGC module
588
+
589
+ The optional Unicorn::OobGC module is reimplemented to fix
590
+ breakage that appeared in v3.3.1. There are also minor
591
+ documentation updates, but no code changes as of 3.6.1 for
592
+ non-OobGC users.
593
+
594
+ There is also a v1.1.7 release to fix the same OobGC breakage
595
+ that appeared for 1.1.x users in the v1.1.6 release.
596
+
597
+ commit 1588c299703754e52b9f36219c21e13204734e6c
598
+ Merge: fe47a17 0874125
599
+ Author: Eric Wong <normalperson@yhbt.net>
600
+ Date: Sat Apr 30 06:33:53 2011 +0000
601
+
602
+ Merge commit 'v1.1.7'
603
+
604
+ * commit 'v1.1.7':
605
+ unicorn 1.1.7 - major fixes to minor components
606
+ oob_gc: reimplement to fix breakage and add tests
607
+ exec_cgi: handle Status header in CGI response
608
+ unicorn 1.1.6 - one minor, esoteric bugfix
609
+ close client socket after closing response body
610
+
611
+ commit fe47a179468799bbbb893b339cbb0d4fedf29c2a
612
+ Author: Eric Wong <normalperson@yhbt.net>
613
+ Date: Fri Apr 29 23:31:35 2011 -0700
614
+
615
+ TUNING: more minor doc updates
616
+
617
+ commit 0874125ce56d52cee0f634712e69d1387eadfae1
618
+ Author: Eric Wong <normalperson@yhbt.net>
619
+ Date: Sat Apr 30 04:56:28 2011 +0000
620
+
621
+ unicorn 1.1.7 - major fixes to minor components
622
+
623
+ No changes to the core code, so this release only affects users
624
+ of the Unicorn::OobGC and Unicorn::ExecCGI modules.
625
+ Unicorn::OobGC was totally broken by the fix in the v1.1.6
626
+ release and is now reimplemented. Unicorn::ExecCGI (which
627
+ hardly anybody uses) now returns proper HTTP status codes.
628
+
629
+ commit fe0dd93cd9cb97b46f6cfb4b1e370e38717a93f0
630
+ Author: Eric Wong <normalperson@yhbt.net>
631
+ Date: Fri Apr 29 15:48:35 2011 -0700
632
+
633
+ oob_gc: reimplement to fix breakage and add tests
634
+
635
+ This was broken since v3.3.1[1] and v1.1.6[2] since nginx relies on
636
+ a closed socket (and not Content-Length/Transfer-Encoding) to
637
+ detect a response completion. We have to close the client
638
+ socket before invoking GC to ensure the client sees the response
639
+ in a timely manner.
640
+
641
+ [1] - commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed
642
+ [2] - commit b7a0074284d33352bb9e732c660b29162f34bf0e
643
+
644
+ (cherry picked from commit faeb3223636c39ea8df4017dc9a9d39ac649b26d)
645
+
646
+ Conflicts:
647
+
648
+ examples/big_app_gc.rb
649
+ lib/unicorn/oob_gc.rb
650
+
651
+ commit 02a116c0d94a60a64abf8ad2465132e8194dd62a
652
+ Author: Eric Wong <normalperson@yhbt.net>
653
+ Date: Fri Apr 29 16:01:35 2011 -0700
654
+
655
+ TUNING: document worker_processes tuning
656
+
657
+ It seems people are still confused about it...
658
+
659
+ commit faeb3223636c39ea8df4017dc9a9d39ac649b26d
660
+ Author: Eric Wong <normalperson@yhbt.net>
661
+ Date: Fri Apr 29 15:48:35 2011 -0700
662
+
663
+ oob_gc: reimplement to fix breakage and add tests
664
+
665
+ This was broken since v3.3.1[1] since nginx relies on a closed
666
+ socket (and not Content-Length/Transfer-Encoding) to detect
667
+ a response completion. We have to close the client socket
668
+ before invoking GC to ensure the client sees the response
669
+ in a timely manner.
670
+
671
+ [1] - commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed
672
+
673
+ commit ce4995a4daf1e4da7034dc87fd218a283c405410
674
+ Author: Eric Wong <normalperson@yhbt.net>
675
+ Date: Fri Apr 29 15:30:07 2011 -0700
676
+
677
+ TUNING: original sentence was incomplete
678
+
679
+ commit 843d30120139dc372aca6c1773ac7699b6ee6345
680
+ Author: Eric Wong <normalperson@yhbt.net>
681
+ Date: Fri Apr 29 12:21:38 2011 -0700
682
+
683
+ examples/big_app_gc: fix comment
684
+
685
+ Oops, comments should match the latest code
686
+
687
+ commit d4f70c45029ab1c6aba4bc2d69283ae43e46d9ff
688
+ Author: Eric Wong <normalperson@yhbt.net>
689
+ Date: Fri Apr 29 12:18:59 2011 -0700
690
+
691
+ examples/big_app_gc: update this example
692
+
693
+ OobGC is actually broken with nginx these days since
694
+ we needed to preserve the env for body.close...
695
+
696
+ commit eaf72275e36560e567efc9597d929e02dc2f577d
697
+ Author: Eric Wong <normalperson@yhbt.net>
698
+ Date: Wed Apr 27 13:49:14 2011 -0700
699
+
700
+ configurator: attempt to clarify :tcp_nopush/:tcp_nodelay
701
+
702
+ These options will probably be more important as interest in
703
+ streaming responses in Rails 3.1 develops.
704
+
705
+ I consider the respective defaults for Unicorn (designed to run
706
+ behind nginx) and Rainbows! (designed to run standalone) to be
707
+ the best choices in their respective environments.
708
+
709
+ commit 37c491dcc23d445521229dbe902f02833f2a0f4c
710
+ Author: Eric Wong <normalperson@yhbt.net>
711
+ Date: Wed Apr 27 13:13:24 2011 -0700
712
+
713
+ examples/nginx.conf: clarify proxy_buffering for Rails 3.1
714
+
715
+ I've tested with nginx 1.0.0 and confirmed "proxy_buffering off;"
716
+ can cause Unicorn to block on a slow client reading a
717
+ large response. While there's a potential (client-visible)
718
+ performance improvement with Rails 3.1 streaming responses, it
719
+ can also hurt the server with slow clients.
720
+
721
+ Rainbows! with (ThreadSpawn or ThreadPool) is probably the best
722
+ way to do streaming responses efficiently from all angles (from
723
+ a server, client and programmer time perspective).
724
+
725
+ commit 1b3befbadb99c83c24109f68b719276f0051c7fb
726
+ Author: Eric Wong <normalperson@yhbt.net>
727
+ Date: Tue Apr 26 16:04:19 2011 -0700
728
+
729
+ unicorn 3.6.1 - fix OpenSSL PRNG workaround
730
+
731
+ Our attempt in 3.6.0 to workaround a problem with the OpenSSL
732
+ PRNG actually made the problem worse. This release corrects the
733
+ workaround to properly reseed the OpenSSL PRNG after forking.
734
+
735
+ commit 34f7dbd1b7e087bc8c86029496fd8daa7dc58441
736
+ Author: Eric Wong <normalperson@yhbt.net>
737
+ Date: Tue Apr 26 16:01:31 2011 -0700
738
+
739
+ properly reseed OpenSSL::Random after forking
740
+
741
+ Using the return value of Kernel#srand actually made the
742
+ problem worse. Using the value of Kernel#rand is required
743
+ to actually get a random value to seed the OpenSSL PRNG.
744
+
745
+ Thanks to ghazel for the bug report!
746
+
3
747
  commit 2aabf90ca53b31edef6c2b63006c33374840c816
4
748
  Author: Eric Wong <normalperson@yhbt.net>
5
749
  Date: Thu Apr 21 06:16:27 2011 +0000
@@ -514,6 +1258,17 @@ ChangeLog from http://bogomips.org/unicorn.git (v1.1.5..v3.6.0)
514
1258
 
515
1259
  bogomips.org is slimming down and losing URL weight :)
516
1260
 
1261
+ commit d385bc4f3ed7b783b7414f5d34299bd2bf242fe6
1262
+ Author: Eric Wong <normalperson@yhbt.net>
1263
+ Date: Fri Jan 21 04:01:01 2011 +0000
1264
+
1265
+ exec_cgi: handle Status header in CGI response
1266
+
1267
+ We no longer blindly return 200 if the CGI returned another error
1268
+ code. We also don't want two Status headers in our output since we
1269
+ no longer filter it out.
1270
+ (cherry picked from commit 6cca8e61c66c1c2a8ebe260813fa83e44530a768)
1271
+
517
1272
  commit 6cca8e61c66c1c2a8ebe260813fa83e44530a768
518
1273
  Author: Eric Wong <normalperson@yhbt.net>
519
1274
  Date: Fri Jan 21 04:01:01 2011 +0000
@@ -565,6 +1320,33 @@ ChangeLog from http://bogomips.org/unicorn.git (v1.1.5..v3.6.0)
565
1320
  There is also a new v1.1.6 release for users who do not use
566
1321
  kgio.
567
1322
 
1323
+ commit 3587edb6e88ebe5c24cdde090ba8dd98de493d63
1324
+ Author: Eric Wong <normalperson@yhbt.net>
1325
+ Date: Thu Jan 6 15:40:54 2011 -0800
1326
+
1327
+ unicorn 1.1.6 - one minor, esoteric bugfix
1328
+
1329
+ We now close the client socket after closing the response body.
1330
+ This does not affect most applications that run under Unicorn,
1331
+ in fact, it may not affect any.
1332
+
1333
+ commit b7a0074284d33352bb9e732c660b29162f34bf0e
1334
+ Author: Eric Wong <normalperson@yhbt.net>
1335
+ Date: Wed Jan 5 23:05:05 2011 -0800
1336
+
1337
+ close client socket after closing response body
1338
+
1339
+ Response bodies may capture the block passed to each
1340
+ and save it for body.close, so don't close the socket
1341
+ before we have a chance to call body.close
1342
+
1343
+ (cherry picked from commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed)
1344
+
1345
+ Conflicts:
1346
+
1347
+ lib/unicorn/http_server.rb
1348
+ test/unit/test_response.rb
1349
+
568
1350
  commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed
569
1351
  Author: Eric Wong <normalperson@yhbt.net>
570
1352
  Date: Wed Jan 5 22:39:03 2011 -0800