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.
- 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
|