unicorn 3.6.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +1 -0
- data/.manifest +13 -0
- data/ChangeLog +783 -1
- data/DESIGN +0 -8
- data/Documentation/GNUmakefile +1 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +2 -2
- data/HACKING +11 -0
- data/KNOWN_ISSUES +2 -2
- data/LATEST +24 -24
- data/Links +53 -0
- data/NEWS +66 -0
- data/PHILOSOPHY +49 -49
- data/Sandbox +13 -4
- data/TODO +0 -2
- data/TUNING +31 -9
- data/bin/unicorn +2 -1
- data/bin/unicorn_rails +2 -1
- data/examples/big_app_gc.rb +2 -33
- data/examples/nginx.conf +17 -4
- data/ext/unicorn_http/ext_help.h +16 -0
- data/ext/unicorn_http/extconf.rb +1 -0
- data/ext/unicorn_http/global_variables.h +9 -3
- data/ext/unicorn_http/unicorn_http.c +357 -259
- data/ext/unicorn_http/unicorn_http.rl +148 -50
- data/lib/unicorn/configurator.rb +36 -8
- data/lib/unicorn/const.rb +5 -3
- data/lib/unicorn/http_request.rb +1 -3
- data/lib/unicorn/http_server.rb +82 -95
- data/lib/unicorn/oob_gc.rb +61 -50
- data/lib/unicorn/socket_helper.rb +23 -8
- data/lib/unicorn/worker.rb +45 -4
- data/lib/unicorn.rb +8 -6
- data/script/isolate_for_tests +4 -2
- data/t/broken-app.ru +12 -0
- data/t/heartbeat-timeout.ru +12 -0
- data/t/oob_gc.ru +21 -0
- data/t/oob_gc_path.ru +21 -0
- data/t/t0001-reload-bad-config.sh +1 -0
- data/t/t0002-parser-error.sh +64 -1
- data/t/t0004-heartbeat-timeout.sh +69 -0
- data/t/t0009-broken-app.sh +56 -0
- data/t/t0019-max_header_len.sh +49 -0
- data/t/t0020-at_exit-handler.sh +49 -0
- data/t/t9001-oob_gc.sh +47 -0
- data/t/t9002-oob_gc-path.sh +75 -0
- data/test/benchmark/stack.ru +8 -0
- data/test/unit/test_droplet.rb +28 -0
- data/test/unit/test_http_parser.rb +60 -4
- data/test/unit/test_http_parser_ng.rb +54 -0
- data/test/unit/test_response.rb +1 -1
- data/test/unit/test_server.rb +1 -1
- data/test/unit/test_signals.rb +1 -1
- data/test/unit/test_socket_helper.rb +8 -0
- data/test/unit/test_upload.rb +1 -1
- data/unicorn.gemspec +3 -2
- metadata +44 -16
data/ChangeLog
CHANGED
@@ -1,5 +1,749 @@
|
|
1
|
-
ChangeLog from http://bogomips.org/unicorn.git (v1.1.5..
|
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
|