wendell-puma 2.9.2
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.
- checksums.yaml +7 -0
- data/COPYING +55 -0
- data/DEPLOYMENT.md +92 -0
- data/Gemfile +17 -0
- data/History.txt +588 -0
- data/LICENSE +26 -0
- data/Manifest.txt +68 -0
- data/README.md +251 -0
- data/Rakefile +158 -0
- data/bin/puma +10 -0
- data/bin/puma-wild +31 -0
- data/bin/pumactl +12 -0
- data/docs/config.md +0 -0
- data/docs/nginx.md +80 -0
- data/docs/signals.md +43 -0
- data/ext/puma_http11/PumaHttp11Service.java +17 -0
- data/ext/puma_http11/ext_help.h +15 -0
- data/ext/puma_http11/extconf.rb +9 -0
- data/ext/puma_http11/http11_parser.c +1225 -0
- data/ext/puma_http11/http11_parser.h +64 -0
- data/ext/puma_http11/http11_parser.java.rl +161 -0
- data/ext/puma_http11/http11_parser.rl +146 -0
- data/ext/puma_http11/http11_parser_common.rl +54 -0
- data/ext/puma_http11/io_buffer.c +155 -0
- data/ext/puma_http11/mini_ssl.c +198 -0
- data/ext/puma_http11/org/jruby/puma/Http11.java +225 -0
- data/ext/puma_http11/org/jruby/puma/Http11Parser.java +488 -0
- data/ext/puma_http11/org/jruby/puma/MiniSSL.java +391 -0
- data/ext/puma_http11/puma_http11.c +491 -0
- data/lib/puma.rb +14 -0
- data/lib/puma/accept_nonblock.rb +23 -0
- data/lib/puma/app/status.rb +59 -0
- data/lib/puma/binder.rb +298 -0
- data/lib/puma/capistrano.rb +86 -0
- data/lib/puma/cli.rb +606 -0
- data/lib/puma/client.rb +289 -0
- data/lib/puma/cluster.rb +404 -0
- data/lib/puma/compat.rb +18 -0
- data/lib/puma/configuration.rb +377 -0
- data/lib/puma/const.rb +165 -0
- data/lib/puma/control_cli.rb +251 -0
- data/lib/puma/daemon_ext.rb +25 -0
- data/lib/puma/delegation.rb +11 -0
- data/lib/puma/detect.rb +4 -0
- data/lib/puma/events.rb +130 -0
- data/lib/puma/io_buffer.rb +7 -0
- data/lib/puma/java_io_buffer.rb +45 -0
- data/lib/puma/jruby_restart.rb +83 -0
- data/lib/puma/minissl.rb +187 -0
- data/lib/puma/null_io.rb +34 -0
- data/lib/puma/rack_default.rb +7 -0
- data/lib/puma/rack_patch.rb +45 -0
- data/lib/puma/reactor.rb +183 -0
- data/lib/puma/runner.rb +146 -0
- data/lib/puma/server.rb +801 -0
- data/lib/puma/single.rb +102 -0
- data/lib/puma/tcp_logger.rb +32 -0
- data/lib/puma/thread_pool.rb +185 -0
- data/lib/puma/util.rb +9 -0
- data/lib/rack/handler/puma.rb +66 -0
- data/test/test_app_status.rb +92 -0
- data/test/test_cli.rb +173 -0
- data/test/test_config.rb +26 -0
- data/test/test_http10.rb +27 -0
- data/test/test_http11.rb +144 -0
- data/test/test_integration.rb +165 -0
- data/test/test_iobuffer.rb +38 -0
- data/test/test_minissl.rb +29 -0
- data/test/test_null_io.rb +31 -0
- data/test/test_persistent.rb +238 -0
- data/test/test_puma_server.rb +288 -0
- data/test/test_puma_server_ssl.rb +137 -0
- data/test/test_rack_handler.rb +10 -0
- data/test/test_rack_server.rb +141 -0
- data/test/test_tcp_rack.rb +42 -0
- data/test/test_thread_pool.rb +156 -0
- data/test/test_unix_socket.rb +39 -0
- data/test/test_ws.rb +89 -0
- data/tools/jungle/README.md +9 -0
- data/tools/jungle/init.d/README.md +54 -0
- data/tools/jungle/init.d/puma +332 -0
- data/tools/jungle/init.d/run-puma +3 -0
- data/tools/jungle/upstart/README.md +61 -0
- data/tools/jungle/upstart/puma-manager.conf +31 -0
- data/tools/jungle/upstart/puma.conf +63 -0
- data/tools/trickletest.rb +45 -0
- data/wendell-puma.gemspec +55 -0
- metadata +225 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 128d9e5b739839b37007cb13462c04eaaf6c7c22
|
|
4
|
+
data.tar.gz: 639592550765721470254b870c79e84b08a3c59e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b01acb0320f82eb83ffe2a766929c14b6315390c1a585d847d2c7190b9bf3baef9015fc3f49c86b8597a873c8341b1b0a5c7f779fc71224cfa5abe3d70bdbd6d
|
|
7
|
+
data.tar.gz: 420a7c6a3750332c62c6831bf28c35c6d7fb171c8effe8f314cb78fd53d0b960c33eb67dd2c7007a775dfd989fe55cec18a7fd39bec5248618e3a840f89bdc2b
|
data/COPYING
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Mongrel Web Server (Mongrel) is copyrighted free software by Zed A. Shaw
|
|
2
|
+
<zedshaw at zedshaw dot com> You can redistribute it and/or modify it under
|
|
3
|
+
either the terms of the GPL or the conditions below:
|
|
4
|
+
|
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
|
6
|
+
software without restriction, provided that you duplicate all of the
|
|
7
|
+
original copyright notices and associated disclaimers.
|
|
8
|
+
|
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
|
10
|
+
you do at least ONE of the following:
|
|
11
|
+
|
|
12
|
+
a) place your modifications in the Public Domain or otherwise make them
|
|
13
|
+
Freely Available, such as by posting said modifications to Usenet or an
|
|
14
|
+
equivalent medium, or by allowing the author to include your
|
|
15
|
+
modifications in the software.
|
|
16
|
+
|
|
17
|
+
b) use the modified software only within your corporation or
|
|
18
|
+
organization.
|
|
19
|
+
|
|
20
|
+
c) rename any non-standard executables so the names do not conflict with
|
|
21
|
+
standard executables, which must also be provided.
|
|
22
|
+
|
|
23
|
+
d) make other distribution arrangements with the author.
|
|
24
|
+
|
|
25
|
+
3. You may distribute the software in object code or executable
|
|
26
|
+
form, provided that you do at least ONE of the following:
|
|
27
|
+
|
|
28
|
+
a) distribute the executables and library files of the software,
|
|
29
|
+
together with instructions (in the manual page or equivalent) on where
|
|
30
|
+
to get the original distribution.
|
|
31
|
+
|
|
32
|
+
b) accompany the distribution with the machine-readable source of the
|
|
33
|
+
software.
|
|
34
|
+
|
|
35
|
+
c) give non-standard executables non-standard names, with
|
|
36
|
+
instructions on where to get the original software distribution.
|
|
37
|
+
|
|
38
|
+
d) make other distribution arrangements with the author.
|
|
39
|
+
|
|
40
|
+
4. You may modify and include the part of the software into any other
|
|
41
|
+
software (possibly commercial). But some files in the distribution
|
|
42
|
+
are not written by the author, so that they are not under this terms.
|
|
43
|
+
|
|
44
|
+
5. The scripts and library files supplied as input to or produced as
|
|
45
|
+
output from the software do not automatically fall under the
|
|
46
|
+
copyright of the software, but belong to whomever generated them,
|
|
47
|
+
and may be sold commercially, and may be aggregated with this
|
|
48
|
+
software.
|
|
49
|
+
|
|
50
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
|
51
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
52
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
53
|
+
PURPOSE.
|
|
54
|
+
|
|
55
|
+
|
data/DEPLOYMENT.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Deployment engineering for puma
|
|
2
|
+
|
|
3
|
+
Puma is software that is expected to be run in a deployed environment eventually.
|
|
4
|
+
You can centainly use it as your dev server only, but most people look to use
|
|
5
|
+
it in their production deployments as well.
|
|
6
|
+
|
|
7
|
+
To that end, this is meant to serve as a foundation of wisdom how to do that
|
|
8
|
+
in a way that increases happiness and decreases downtime.
|
|
9
|
+
|
|
10
|
+
## Specifying puma
|
|
11
|
+
|
|
12
|
+
Most people want to do this by putting `gem "puma"` into their Gemfile, so we'll
|
|
13
|
+
go ahead and assume that. Go add it now... we'll wait.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Welcome back!
|
|
17
|
+
|
|
18
|
+
## Single vs Cluster mode
|
|
19
|
+
|
|
20
|
+
Puma was originally concieved as a thread-only webserver, but grew the ability to
|
|
21
|
+
also use processes in version 2.
|
|
22
|
+
|
|
23
|
+
Here are some rules of thumb:
|
|
24
|
+
|
|
25
|
+
### MRI
|
|
26
|
+
|
|
27
|
+
* Use cluster mode and set the number of workers to 1.5x the number of cpu cores
|
|
28
|
+
in the machine, minimum 2.
|
|
29
|
+
* Set the number of threads to desired concurrent requests / number of workers.
|
|
30
|
+
Puma defaults to 8 and thats a decent number.
|
|
31
|
+
|
|
32
|
+
#### Migrating from Unicorn
|
|
33
|
+
|
|
34
|
+
* If you're migrating from unicorn though, here are some settings to start with:
|
|
35
|
+
* Set workers to half the number of unicorn workers you're using
|
|
36
|
+
* Set threads to 2
|
|
37
|
+
* Enjoy 50% memory savings
|
|
38
|
+
* As you grow more confident in the thread safety of your app, you can tune the
|
|
39
|
+
workers down and the threads up.
|
|
40
|
+
|
|
41
|
+
#### Worker utilization
|
|
42
|
+
|
|
43
|
+
**How do you know if you're got enough (or too many workers)?**
|
|
44
|
+
|
|
45
|
+
A good question. Due to MRI's GIL, only one thread can be executing Ruby code at a time.
|
|
46
|
+
But since so many apps are waiting on IO from DBs, etc., they can utilize threads
|
|
47
|
+
to make better use of the process.
|
|
48
|
+
|
|
49
|
+
The rule of thumb is you never want processes that are pegged all the time. This
|
|
50
|
+
means that there is more work to do that the process can get through. On the other
|
|
51
|
+
hand, if you have processes that sit around doing nothing, then they're just eating
|
|
52
|
+
up resources.
|
|
53
|
+
|
|
54
|
+
Watching your CPU utilization over time and aim for about 70% on average. This means
|
|
55
|
+
you've got capacity still but aren't starving threads.
|
|
56
|
+
|
|
57
|
+
## Daemonizing
|
|
58
|
+
|
|
59
|
+
I prefer to not daemonize my servers and use something like `runit` or `upstart` to
|
|
60
|
+
monitor them as child processes. This gives them fast response to crashes and
|
|
61
|
+
makes it easy to figure out what is going on. Additionally, unlike `unicorn`,
|
|
62
|
+
puma does not require daemonization to do zero-downtime restarts.
|
|
63
|
+
|
|
64
|
+
I see people using daemonization because they start puma directly via capistrano
|
|
65
|
+
task and thus want it to live on past the `cap deploy`. To this people I said:
|
|
66
|
+
You need to be using a process monitor. Nothing is making sure puma stays up in
|
|
67
|
+
this scenario! You're just waiting for something weird to happen, puma to die,
|
|
68
|
+
and to get paged at 3am. Do yourself a favor, at least the process monitoring
|
|
69
|
+
your OS comes with, be it `sysvinit`, `upstart`, or `systemd`. Or branch out
|
|
70
|
+
and use `runit` or hell, even `monit`.
|
|
71
|
+
|
|
72
|
+
## Restarting
|
|
73
|
+
|
|
74
|
+
You probably will want to deploy some new code at some point, and you'd like
|
|
75
|
+
puma to start running that new code. Minimizing the amount of time the server
|
|
76
|
+
is unavailable would be nice as well. Here's how to do it:
|
|
77
|
+
|
|
78
|
+
1. Don't use `preload!`. This dirties the master process and means it will have
|
|
79
|
+
to shutdown all the workers and re-exec itself to get your new code, which means
|
|
80
|
+
much higher waiting around for things to load.
|
|
81
|
+
|
|
82
|
+
1. Use `prune_bundler`. This makes it so that the cluster master will detach itself
|
|
83
|
+
from a Bundler context on start. This allows the cluster workers to load your app
|
|
84
|
+
and start a brand new Bundler context within the worker only. This means your
|
|
85
|
+
master remains pristine and can live on between new releases of your code.
|
|
86
|
+
|
|
87
|
+
1. Use phased-restart (`SIGUSR1` or `pumactl phased-restart`). This tells the master
|
|
88
|
+
to kill off one worker at a time and restart them in your new code. This minimizes
|
|
89
|
+
downtime and staggers the restart nicely. **WARNING** This means that both your
|
|
90
|
+
old code and your new code will be running concurrently. Most deployment solutions
|
|
91
|
+
already cause that, but it's worth warning you about it again. Be careful with your
|
|
92
|
+
migrations, etc!
|
data/Gemfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source "http://rubygems.org"
|
|
2
|
+
|
|
3
|
+
gem "hoe"
|
|
4
|
+
gem "hoe-git"
|
|
5
|
+
gem "hoe-ignore"
|
|
6
|
+
gem "rdoc"
|
|
7
|
+
gem "rake-compiler"
|
|
8
|
+
gem "rack"
|
|
9
|
+
|
|
10
|
+
gem 'minitest', '~> 4.0'
|
|
11
|
+
|
|
12
|
+
gem "jruby-openssl", :platform => "jruby"
|
|
13
|
+
|
|
14
|
+
platforms :rbx do
|
|
15
|
+
gem 'rubysl', '~> 2.0'
|
|
16
|
+
end
|
|
17
|
+
|
data/History.txt
ADDED
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
=== 2.9.2 / 1024-10-25
|
|
2
|
+
|
|
3
|
+
* 8 bug fixes:
|
|
4
|
+
* Fix puma-wild handling a restart properly. Fixes #550
|
|
5
|
+
* JRuby SSL POODLE update
|
|
6
|
+
* Keep deprecated features warnings
|
|
7
|
+
* Log the current time when Puma shuts down.
|
|
8
|
+
* Fix cross-platform extension library detection
|
|
9
|
+
* Use the correct Windows names for OpenSSL.
|
|
10
|
+
* Better error logging during startup
|
|
11
|
+
* Fixing sexist error messages
|
|
12
|
+
|
|
13
|
+
* 6 PRs merged:
|
|
14
|
+
* Merge pull request #549 from bsnape/log-shutdown-time
|
|
15
|
+
* Merge pull request #553 from lowjoel/master
|
|
16
|
+
* Merge pull request #568 from mariuz/patch-1
|
|
17
|
+
* Merge pull request #578 from danielbuechele/patch-1
|
|
18
|
+
* Merge pull request #581 from alexch/slightly-better-logging
|
|
19
|
+
* Merge pull request #590 from looker/jruby_disable_sslv3
|
|
20
|
+
|
|
21
|
+
=== 2.9.1 / 2014-09-05
|
|
22
|
+
|
|
23
|
+
* 4 bug fixes:
|
|
24
|
+
* Cleanup the SSL related structures properly, fixes memory leak
|
|
25
|
+
* Fix thread spawning edge case.
|
|
26
|
+
* Force a worker check after a worker boots, don't wait 5sec. Fixes #574
|
|
27
|
+
* Implement SIGHUP for logs reopening
|
|
28
|
+
|
|
29
|
+
* 2 PRs merged:
|
|
30
|
+
* Merge pull request #561 from theoldreader/sighup
|
|
31
|
+
* Merge pull request #570 from havenwood/spawn-thread-edge-case
|
|
32
|
+
|
|
33
|
+
=== 2.9.0 / 2014-07-12
|
|
34
|
+
|
|
35
|
+
* 1 minor feature:
|
|
36
|
+
* Add SSL support for JRuby
|
|
37
|
+
|
|
38
|
+
* 3 bug fixes:
|
|
39
|
+
* Typo BUNDLER_GEMFILE -> BUNDLE_GEMFILE
|
|
40
|
+
* Use fast_write because we can't trust syswrite
|
|
41
|
+
* pumactl - do not modify original ARGV
|
|
42
|
+
|
|
43
|
+
* 4 doc fixes:
|
|
44
|
+
* BSD-3-Clause over BSD to avoid confusion
|
|
45
|
+
* Deploy doc: clarification of the GIL
|
|
46
|
+
* Fix typo in DEPLOYMENT.md
|
|
47
|
+
* Update README.md
|
|
48
|
+
|
|
49
|
+
* 6 PRs merged:
|
|
50
|
+
* Merge pull request #520 from misfo/patch-2
|
|
51
|
+
* Merge pull request #530 from looker/jruby-ssl
|
|
52
|
+
* Merge pull request #537 from vlmonk/patch-1
|
|
53
|
+
* Merge pull request #540 from allaire/patch-1
|
|
54
|
+
* Merge pull request #544 from chulkilee/bsd-3-clause
|
|
55
|
+
* Merge pull request #551 from jcxplorer/patch-1
|
|
56
|
+
|
|
57
|
+
=== 2.8.2 / 2014-04-12
|
|
58
|
+
|
|
59
|
+
* 4 bug fixes:
|
|
60
|
+
* During upgrade, change directory in main process instead of workers.
|
|
61
|
+
* Close the client properly on error
|
|
62
|
+
* Capistrano: fallback from phased restart to start when not started
|
|
63
|
+
* Allow tag option in conf file
|
|
64
|
+
|
|
65
|
+
* 4 doc fixes:
|
|
66
|
+
* Fix Puma daemon service README typo
|
|
67
|
+
* `preload_app!` instead of `preload_app`
|
|
68
|
+
* add preload_app and prune_bundler to example config
|
|
69
|
+
* allow changing of worker_timeout in config file
|
|
70
|
+
|
|
71
|
+
* 11 PRs merged:
|
|
72
|
+
* Merge pull request #487 from ckuttruff/master
|
|
73
|
+
* Merge pull request #492 from ckuttruff/master
|
|
74
|
+
* Merge pull request #493 from alepore/config_tag
|
|
75
|
+
* Merge pull request #503 from mariuz/patch-1
|
|
76
|
+
* Merge pull request #505 from sammcj/patch-1
|
|
77
|
+
* Merge pull request #506 from FlavourSys/config_worker_timeout
|
|
78
|
+
* Merge pull request #510 from momer/rescue-block-handle-servers-fix
|
|
79
|
+
* Merge pull request #511 from macool/patch-1
|
|
80
|
+
* Merge pull request #514 from edogawaconan/refactor_env
|
|
81
|
+
* Merge pull request #517 from misfo/patch-1
|
|
82
|
+
* Merge pull request #518 from LongMan/master
|
|
83
|
+
|
|
84
|
+
=== 2.8.1 / 2014-03-06
|
|
85
|
+
|
|
86
|
+
* 1 bug fixes:
|
|
87
|
+
* Run puma-wild with proper deps for prune_bundler
|
|
88
|
+
|
|
89
|
+
* 2 doc changes:
|
|
90
|
+
* Described the configuration file finding behavior added in 2.8.0 and how to disable it.
|
|
91
|
+
* Start the deployment doc
|
|
92
|
+
|
|
93
|
+
* 6 PRs merged:
|
|
94
|
+
* Merge pull request #471 from arthurnn/fix_test
|
|
95
|
+
* Merge pull request #485 from joneslee85/patch-9
|
|
96
|
+
* Merge pull request #486 from joshwlewis/patch-1
|
|
97
|
+
* Merge pull request #490 from tobinibot/patch-1
|
|
98
|
+
* Merge pull request #491 from brianknight10/clarify-no-config
|
|
99
|
+
|
|
100
|
+
=== 2.8.0 / 2014-02-28
|
|
101
|
+
|
|
102
|
+
* 8 minor features:
|
|
103
|
+
* Add ability to autoload a config file. Fixes #438
|
|
104
|
+
* Add ability to detect and terminate hung workers. Fixes #333
|
|
105
|
+
* Add booted_workers to stats response
|
|
106
|
+
* Add config to customize the default error message
|
|
107
|
+
* Add prune_bundler option
|
|
108
|
+
* Add worker indexes, expose them via on_worker_boot. Fixes #440
|
|
109
|
+
* Add pretty process name
|
|
110
|
+
* Show the ruby version in use
|
|
111
|
+
|
|
112
|
+
* 7 bug fixes:
|
|
113
|
+
* Added 408 status on timeout.
|
|
114
|
+
* Be more hostile with sockets that write block. Fixes #449
|
|
115
|
+
* Expect at_exit to exclusively remove the pidfile. Fixes #444
|
|
116
|
+
* Expose latency and listen backlog via bind query. Fixes #370
|
|
117
|
+
* JRuby raises IOError if the socket is there. Fixes #377
|
|
118
|
+
* Process requests fairly. Fixes #406
|
|
119
|
+
* Rescue SystemCallError as well. Fixes #425
|
|
120
|
+
|
|
121
|
+
* 4 doc changes:
|
|
122
|
+
* Add 2.1.0 to the matrix
|
|
123
|
+
* Add Code Climate badge to README
|
|
124
|
+
* Create signals.md
|
|
125
|
+
* Set the license to BSD. Fixes #432
|
|
126
|
+
|
|
127
|
+
* 14 PRs merged:
|
|
128
|
+
* Merge pull request #428 from alexeyfrank/capistrano_default_hooks
|
|
129
|
+
* Merge pull request #429 from namusyaka/revert-const_defined
|
|
130
|
+
* Merge pull request #431 from mrb/master
|
|
131
|
+
* Merge pull request #433 from alepore/process-name
|
|
132
|
+
* Merge pull request #437 from ibrahima/master
|
|
133
|
+
* Merge pull request #446 from sudara/master
|
|
134
|
+
* Merge pull request #451 from pwiebe/status_408
|
|
135
|
+
* Merge pull request #453 from joevandyk/patch-1
|
|
136
|
+
* Merge pull request #470 from arthurnn/fix_458
|
|
137
|
+
* Merge pull request #472 from rubencaro/master
|
|
138
|
+
* Merge pull request #480 from jjb/docs-on-running-test-suite
|
|
139
|
+
* Merge pull request #481 from schneems/master
|
|
140
|
+
* Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup
|
|
141
|
+
* Merge pull request #483 from YotpoLtd/master
|
|
142
|
+
|
|
143
|
+
=== 2.7.1 / 2013-12-05
|
|
144
|
+
|
|
145
|
+
* 1 bug fix:
|
|
146
|
+
|
|
147
|
+
* Keep STDOUT/STDERR the right mode. Fixes #422
|
|
148
|
+
|
|
149
|
+
=== 2.7.0 / 2013-12-03
|
|
150
|
+
|
|
151
|
+
* 1 minor feature:
|
|
152
|
+
* Adding TTIN and TTOU to increment/decrement workers
|
|
153
|
+
|
|
154
|
+
* N bug fixes:
|
|
155
|
+
* Always use our Process.daemon because it's not busted
|
|
156
|
+
* Add capistrano restart failback to start.
|
|
157
|
+
* Change position of `cd` so that rvm gemset is loaded
|
|
158
|
+
* Clarify some platform specifics
|
|
159
|
+
* Do not close the pipe sockets when retrying
|
|
160
|
+
* Fix String#byteslice for Ruby 1.9.1, 1.9.2
|
|
161
|
+
* Fix compatibility with 1.8.7.
|
|
162
|
+
* Handle IOError closed stream in IO.select
|
|
163
|
+
* Increase the max URI path length to 2048 chars from 1024 chars
|
|
164
|
+
* Upstart jungle use config/puma.rb instead
|
|
165
|
+
|
|
166
|
+
=== 2.6.0 / 2013-09-13
|
|
167
|
+
|
|
168
|
+
* 2 minor features:
|
|
169
|
+
* Add support for event hooks
|
|
170
|
+
** Add a hook for state transitions
|
|
171
|
+
* Add phased restart to capistrano recipe.
|
|
172
|
+
|
|
173
|
+
* 4 bug fixes:
|
|
174
|
+
* Convince workers to stop by SIGKILL after timeout
|
|
175
|
+
* Define RSTRING_NOT_MODIFIED for Rubinius performance
|
|
176
|
+
* Handle BrokenPipe, StandardError and IOError in fat_wrote and break out
|
|
177
|
+
* Return success status to the invoking environment
|
|
178
|
+
|
|
179
|
+
=== 2.5.1 / 2013-08-13
|
|
180
|
+
|
|
181
|
+
* 2 bug fixes:
|
|
182
|
+
|
|
183
|
+
* Keep jruby daemon mode from retrying on a hot restart
|
|
184
|
+
* Extract version from const.rb in gemspec
|
|
185
|
+
|
|
186
|
+
=== 2.5.0 / 2013-08-08
|
|
187
|
+
|
|
188
|
+
* 2 minor features:
|
|
189
|
+
* Allow configuring pumactl with config.rb
|
|
190
|
+
* make `pumactl restart` start puma if not running
|
|
191
|
+
|
|
192
|
+
* 6 bug fixes:
|
|
193
|
+
* Autodetect ruby managers and home directory in upstart script
|
|
194
|
+
* Convert header values to string before sending.
|
|
195
|
+
* Correctly report phased-restart availability
|
|
196
|
+
* Fix pidfile creation/deletion race on jruby daemonization
|
|
197
|
+
* Use integers when comparing thread counts
|
|
198
|
+
* Fix typo in using lopez express (raw tcp) mode
|
|
199
|
+
|
|
200
|
+
* 6 misc changes:
|
|
201
|
+
* Fix typo in phased-restart response
|
|
202
|
+
* Uncomment setuid/setgid by default in upstart
|
|
203
|
+
* Use Puma::Const::PUMA_VERSION in gemspec
|
|
204
|
+
* Update upstart comments to reflect new commandline
|
|
205
|
+
* Remove obsolete pumactl instructions; refer to pumactl for details
|
|
206
|
+
* Make Bundler used puma.gemspec version agnostic
|
|
207
|
+
|
|
208
|
+
=== 2.4.1 / 2013-08-07
|
|
209
|
+
|
|
210
|
+
* 1 experimental feature:
|
|
211
|
+
* Support raw tcp servers (aka Lopez Express mode)
|
|
212
|
+
|
|
213
|
+
=== 2.4.0 / 2013-07-22
|
|
214
|
+
|
|
215
|
+
* 5 minor features:
|
|
216
|
+
* Add PUMA_JRUBY_DAEMON_OPTS to get around agent starting twice
|
|
217
|
+
* Add ability to drain accept socket on shutdown
|
|
218
|
+
* Add port to DSL
|
|
219
|
+
* Adds support for using puma config file in capistrano deploys.
|
|
220
|
+
* Make phased_restart fallback to restart if not available
|
|
221
|
+
|
|
222
|
+
* 10 bug fixes:
|
|
223
|
+
|
|
224
|
+
* Be sure to only delete the pid in the master. Fixes #334
|
|
225
|
+
* Call out -C/--config flags
|
|
226
|
+
* Change parser symbol names to avoid clash. Fixes #179
|
|
227
|
+
* Convert thread pool sizes to integers
|
|
228
|
+
* Detect when the jruby daemon child doesn't start properly
|
|
229
|
+
* Fix typo in CLI help
|
|
230
|
+
* Improve the logging output when hijack is used. Fixes #332
|
|
231
|
+
* Remove unnecessary thread pool size conversions
|
|
232
|
+
* Setup :worker_boot as an Array. Fixes #317
|
|
233
|
+
* Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes #309
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
=== 2.3.2 / 2013-07-08
|
|
237
|
+
|
|
238
|
+
* 1 bug fix:
|
|
239
|
+
|
|
240
|
+
* Move starting control server to after daemonization.
|
|
241
|
+
|
|
242
|
+
=== 2.3.1 / 2013-07-06
|
|
243
|
+
|
|
244
|
+
* 2 bug fixes:
|
|
245
|
+
|
|
246
|
+
* Include the right files in the Manifest.
|
|
247
|
+
* Disable inheriting connections on restart on windows. Fixes #166
|
|
248
|
+
|
|
249
|
+
* 1 doc change:
|
|
250
|
+
* Better document some platform constraints
|
|
251
|
+
|
|
252
|
+
=== 2.3.0 / 2013-07-05
|
|
253
|
+
|
|
254
|
+
* 1 major bug fix:
|
|
255
|
+
|
|
256
|
+
* Stabilize control server, add support in cluster mode
|
|
257
|
+
|
|
258
|
+
* 5 minor bug fixes:
|
|
259
|
+
|
|
260
|
+
* Add ability to cleanup stale unix sockets
|
|
261
|
+
* Check status data better. Fixes #292
|
|
262
|
+
* Convert raw IO errors to ConnectionError. Fixes #274
|
|
263
|
+
* Fix sending Content-Type and Content-Length for no body status. Fixes #304
|
|
264
|
+
* Pass state path through to `pumactl start`. Fixes #287
|
|
265
|
+
|
|
266
|
+
* 2 internal changes:
|
|
267
|
+
|
|
268
|
+
* Refactored modes into seperate classes that CLI uses
|
|
269
|
+
* Changed CLI to take an Events object instead of stdout/stderr (API change)
|
|
270
|
+
|
|
271
|
+
=== 2.2.2 / 2013-07-02
|
|
272
|
+
|
|
273
|
+
* 1 bug fix:
|
|
274
|
+
|
|
275
|
+
* Fix restart_command in the config
|
|
276
|
+
|
|
277
|
+
=== 2.2.1 / 2013-07-02
|
|
278
|
+
|
|
279
|
+
* 1 minor feature:
|
|
280
|
+
|
|
281
|
+
* Introduce preload flag
|
|
282
|
+
|
|
283
|
+
* 1 bug fix:
|
|
284
|
+
|
|
285
|
+
* Pass custom restart command in JRuby
|
|
286
|
+
|
|
287
|
+
=== 2.2.0 / 2013-07-01
|
|
288
|
+
|
|
289
|
+
* 1 major feature:
|
|
290
|
+
|
|
291
|
+
* Add ability to preload rack app
|
|
292
|
+
|
|
293
|
+
* 2 minor bugfixes:
|
|
294
|
+
|
|
295
|
+
* Don't leak info when not in development. Fixes #256
|
|
296
|
+
* Load the app, then bind the ports
|
|
297
|
+
|
|
298
|
+
=== 2.1.1 / 2013-06-20
|
|
299
|
+
|
|
300
|
+
* 2 minor bug fixes:
|
|
301
|
+
|
|
302
|
+
* Fix daemonization on jruby
|
|
303
|
+
* Load the application before daemonizing. Fixes #285
|
|
304
|
+
|
|
305
|
+
=== 2.1.0 / 2013-06-18
|
|
306
|
+
|
|
307
|
+
* 3 minor features:
|
|
308
|
+
* Allow listening socket to be configured via Capistrano variable
|
|
309
|
+
* Output results from 'stat's command when using pumactl
|
|
310
|
+
* Support systemd socket activation
|
|
311
|
+
|
|
312
|
+
* 15 bug fixes:
|
|
313
|
+
* Deal with pipes closing while stopping. Fixes #270
|
|
314
|
+
* Error out early if there is no app configured
|
|
315
|
+
* Handle ConnectionError rather than the lowlevel exceptions
|
|
316
|
+
* tune with `-C` config file and `on_worker_boot`
|
|
317
|
+
* use `-w`
|
|
318
|
+
* Fixed some typos in upstart scripts
|
|
319
|
+
* Make sure to use bytesize instead of size (MiniSSL write)
|
|
320
|
+
* Fix an error in puma-manager.conf
|
|
321
|
+
* fix: stop leaking sockets on restart (affects ruby 1.9.3 or before)
|
|
322
|
+
* Ignore errors on the cross-thread pipe. Fixes #246
|
|
323
|
+
* Ignore errors while uncorking the socket (it might already be closed)
|
|
324
|
+
* Ignore the body on a HEAD request. Fixes #278
|
|
325
|
+
* Handle all engine data when possible. Fixes #251.
|
|
326
|
+
* Handle all read exceptions properly. Fixes #252
|
|
327
|
+
* Handle errors from the server better
|
|
328
|
+
|
|
329
|
+
* 3 doc changes:
|
|
330
|
+
* Add note about on_worker_boot hook
|
|
331
|
+
* Add some documentation for Clustered mode
|
|
332
|
+
* Added quotes to /etc/puma.conf
|
|
333
|
+
|
|
334
|
+
=== 2.0.1 / 2013-04-30
|
|
335
|
+
|
|
336
|
+
* 1 bug fix:
|
|
337
|
+
|
|
338
|
+
* Fix not starting on JRuby properly
|
|
339
|
+
|
|
340
|
+
=== 2.0.0 / 2013-04-29
|
|
341
|
+
|
|
342
|
+
RailsConf 2013 edition!
|
|
343
|
+
|
|
344
|
+
* 2 doc changes:
|
|
345
|
+
* Start with rackup -s Puma, NOT rackup -s puma.
|
|
346
|
+
* Minor doc fixes in the README.md, Capistrano section
|
|
347
|
+
|
|
348
|
+
* 2 bug fixes:
|
|
349
|
+
* Fix reading RACK_ENV properly. Fixes #234
|
|
350
|
+
* Make cap recipe handle tmp/sockets; fixes #228
|
|
351
|
+
|
|
352
|
+
* 3 minor changes:
|
|
353
|
+
* Fix capistrano recipe
|
|
354
|
+
* Fix stdout/stderr logs to sync outputs
|
|
355
|
+
* allow binding to IPv6 addresses
|
|
356
|
+
|
|
357
|
+
=== 2.0.0.b7 / 2013-03-18
|
|
358
|
+
|
|
359
|
+
* 5 minor enhancements:
|
|
360
|
+
|
|
361
|
+
* Add -q option for :start
|
|
362
|
+
* Add -V, --version
|
|
363
|
+
* Add default Rack handler helper
|
|
364
|
+
* Upstart support
|
|
365
|
+
* Set worker directory from configuration file
|
|
366
|
+
|
|
367
|
+
* 12 bug fixes:
|
|
368
|
+
|
|
369
|
+
* Close the binder in the right place. Fixes #192
|
|
370
|
+
* Handle early term in workers. Fixes #206
|
|
371
|
+
* Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO.
|
|
372
|
+
* Prevent Errno::EBADF errors on restart when running ruby 2.0
|
|
373
|
+
* Record the proper @master_pid
|
|
374
|
+
* Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number.
|
|
375
|
+
* Retry EAGAIN/EWOULDBLOCK during syswrite
|
|
376
|
+
* Run exec properly to restart. Fixes #154
|
|
377
|
+
* Set Rack run_once to false
|
|
378
|
+
* Syncronize all access to @timeouts. Fixes #208
|
|
379
|
+
* Write out the state post-daemonize. Fixes #189
|
|
380
|
+
* Prevent crash when all workers are gone
|
|
381
|
+
|
|
382
|
+
=== 2.0.0.b6 / 2013-02-06
|
|
383
|
+
|
|
384
|
+
* 2 minor enhancements:
|
|
385
|
+
|
|
386
|
+
* Add hook for running when a worker boots
|
|
387
|
+
* Advertise the Configuration object for apps to use.
|
|
388
|
+
|
|
389
|
+
* 1 bug fix:
|
|
390
|
+
|
|
391
|
+
* Change directory in working during upgrade. Fixes #185
|
|
392
|
+
|
|
393
|
+
=== 2.0.0.b5 / 2013-02-05
|
|
394
|
+
|
|
395
|
+
* 2 major features:
|
|
396
|
+
* Add phased worker upgrade
|
|
397
|
+
* Add support for the rack hijack protocol
|
|
398
|
+
|
|
399
|
+
* 2 minor features:
|
|
400
|
+
* Add -R to specify the restart command
|
|
401
|
+
* Add config file option to specify the restart command
|
|
402
|
+
|
|
403
|
+
* 5 bug fixes:
|
|
404
|
+
* Cleanup pipes properly. Fixes #182
|
|
405
|
+
* Daemonize earlier so that we don't lose app threads. Fixes #183
|
|
406
|
+
* Drain the notification pipe. Fixes #176, thanks @cryo28
|
|
407
|
+
* Move write_pid to after we daemonize. Fixes #180
|
|
408
|
+
* Redirect IO properly and emit message for checkpointing
|
|
409
|
+
|
|
410
|
+
=== 2.0.0.b4 / 2012-12-12
|
|
411
|
+
|
|
412
|
+
* 4 bug fixes:
|
|
413
|
+
* Properly check #syswrite's value for variable sized buffers. Fixes #170
|
|
414
|
+
* Shutdown status server properly
|
|
415
|
+
* Handle char vs byte and mixing syswrite with write properly
|
|
416
|
+
* made MiniSSL validate key/cert file existence
|
|
417
|
+
|
|
418
|
+
=== 2.0.0.b3 / 2012-11-22
|
|
419
|
+
|
|
420
|
+
* 1 bug fix:
|
|
421
|
+
* Package right files in gem
|
|
422
|
+
|
|
423
|
+
=== 2.0.0.b2 / 2012-11-18
|
|
424
|
+
* 5 minor feature:
|
|
425
|
+
* Now Puma is bundled with an capistrano recipe. Just require
|
|
426
|
+
'puma/capistrano' in you deploy.rb
|
|
427
|
+
* Only inject CommonLogger in development mode
|
|
428
|
+
* Add -p option to pumactl
|
|
429
|
+
* Add ability to use pumactl to start a server
|
|
430
|
+
* Add options to daemonize puma
|
|
431
|
+
|
|
432
|
+
* 7 bug fixes:
|
|
433
|
+
* Reset the IOBuffer properly. Fixes #148
|
|
434
|
+
* Shutdown gracefully on JRuby with Ctrl-C
|
|
435
|
+
* Various methods to get newrelic to start. Fixes #128
|
|
436
|
+
* fixing syntax error at capistrano recipe
|
|
437
|
+
* Force ECONNRESET when read returns nil
|
|
438
|
+
* Be sure to empty the drain the todo before shutting down. Fixes #155
|
|
439
|
+
* allow for alternate locations for status app
|
|
440
|
+
|
|
441
|
+
=== 2.0.0.b1 / 2012-09-11
|
|
442
|
+
|
|
443
|
+
* 1 major feature:
|
|
444
|
+
* Optional worker process mode (-w) to allow for process scaling in
|
|
445
|
+
addition to thread scaling
|
|
446
|
+
|
|
447
|
+
* 1 bug fix:
|
|
448
|
+
* Introduce Puma::MiniSSL to be able to properly control doing
|
|
449
|
+
nonblocking SSL
|
|
450
|
+
|
|
451
|
+
NOTE: SSL support in JRuby is not supported at present. Support will
|
|
452
|
+
be added back in a future date when a java Puma::MiniSSL is added.
|
|
453
|
+
|
|
454
|
+
=== 1.6.3 / 2012-09-04
|
|
455
|
+
|
|
456
|
+
* 1 bug fix:
|
|
457
|
+
* Close sockets waiting in the reactor when a hot restart is performed
|
|
458
|
+
so that browsers reconnect on the next request
|
|
459
|
+
|
|
460
|
+
=== 1.6.2 / 2012-08-27
|
|
461
|
+
|
|
462
|
+
* 1 bug fix:
|
|
463
|
+
* Rescue StandardError instead of IOError to handle SystemCallErrors
|
|
464
|
+
as well as other application exceptions inside the reactor.
|
|
465
|
+
|
|
466
|
+
=== 1.6.1 / 2012-07-23
|
|
467
|
+
|
|
468
|
+
* 1 packaging bug fixed:
|
|
469
|
+
* Include missing files
|
|
470
|
+
|
|
471
|
+
=== 1.6.0 / 2012-07-23
|
|
472
|
+
|
|
473
|
+
* 1 major bug fix:
|
|
474
|
+
* Prevent slow clients from starving the server by introducing a
|
|
475
|
+
dedicated IO reactor thread. Credit for reporting goes to @meh.
|
|
476
|
+
|
|
477
|
+
=== 1.5.0 / 2012-07-19
|
|
478
|
+
|
|
479
|
+
* 7 contributers to this release:
|
|
480
|
+
* Christian Mayer
|
|
481
|
+
* Darío Javier Cravero
|
|
482
|
+
* Dirkjan Bussink
|
|
483
|
+
* Gianluca Padovani
|
|
484
|
+
* Santiago Pastorino
|
|
485
|
+
* Thibault Jouan
|
|
486
|
+
* tomykaira
|
|
487
|
+
|
|
488
|
+
* 6 bug fixes:
|
|
489
|
+
* Define RSTRING_NOT_MODIFIED for Rubinius
|
|
490
|
+
* Convert status to integer. Fixes #123
|
|
491
|
+
* Delete pidfile when stopping the server
|
|
492
|
+
* Allow compilation with -Werror=format-security option
|
|
493
|
+
* Fix wrong HTTP version for a HTTP/1.0 request
|
|
494
|
+
* Use String#bytesize instead of String#length
|
|
495
|
+
|
|
496
|
+
* 3 minor features:
|
|
497
|
+
* Added support for setting RACK_ENV via the CLI, config file, and rack app
|
|
498
|
+
* Allow Server#run to run sync. Fixes #111
|
|
499
|
+
* Puma can now run on windows
|
|
500
|
+
|
|
501
|
+
=== 1.4.0 / 2012-06-04
|
|
502
|
+
|
|
503
|
+
* 1 bug fix:
|
|
504
|
+
* SCRIPT_NAME should be passed from env to allow mounting apps
|
|
505
|
+
|
|
506
|
+
* 1 experimental feature:
|
|
507
|
+
* Add puma.socket key for direct socket access
|
|
508
|
+
|
|
509
|
+
=== 1.3.1 / 2012-05-15
|
|
510
|
+
|
|
511
|
+
* 2 bug fixes:
|
|
512
|
+
* use #bytesize instead of #length for Content-Length header
|
|
513
|
+
* Use StringIO properly. Fixes #98
|
|
514
|
+
|
|
515
|
+
=== 1.3.0 / 2012-05-08
|
|
516
|
+
|
|
517
|
+
* 2 minor features:
|
|
518
|
+
* Return valid Rack responses (passes Lint) from status server
|
|
519
|
+
* Add -I option to specify $LOAD_PATH directories
|
|
520
|
+
|
|
521
|
+
* 4 bug fixes:
|
|
522
|
+
* Don't join the server thread inside the signal handle. Fixes #94
|
|
523
|
+
* Make NullIO#read mimic IO#read
|
|
524
|
+
* Only stop the status server if it's started. Fixes #84
|
|
525
|
+
* Set RACK_ENV early in cli also. Fixes #78
|
|
526
|
+
|
|
527
|
+
* 1 new contributer:
|
|
528
|
+
* Jesse Cooke
|
|
529
|
+
|
|
530
|
+
=== 1.2.2 / 2012-04-28
|
|
531
|
+
|
|
532
|
+
* 4 bug fixes:
|
|
533
|
+
|
|
534
|
+
* Report a lowlevel error to stderr
|
|
535
|
+
* Set a fallback SERVER_NAME and SERVER_PORT
|
|
536
|
+
* Keep the encoding of the body correct. Fixes #79
|
|
537
|
+
* show error.to_s along with backtrace for low-level error
|
|
538
|
+
|
|
539
|
+
=== 1.2.1 / 2012-04-11
|
|
540
|
+
|
|
541
|
+
1 bug fix:
|
|
542
|
+
|
|
543
|
+
* Fix rack.url_scheme for SSL servers. Fixes #65
|
|
544
|
+
|
|
545
|
+
=== 1.2.0 / 2012-04-11
|
|
546
|
+
|
|
547
|
+
1 major feature:
|
|
548
|
+
|
|
549
|
+
* When possible, the internal restart does a "hot restart" meaning
|
|
550
|
+
the server sockets remains open, so no connections are lost.
|
|
551
|
+
|
|
552
|
+
1 minor feature:
|
|
553
|
+
|
|
554
|
+
* More helpful fallback error message
|
|
555
|
+
|
|
556
|
+
6 bug fixes:
|
|
557
|
+
|
|
558
|
+
* Pass the proper args to unknown_error. Fixes #54, #58
|
|
559
|
+
* Stop the control server before restarting. Fixes #61
|
|
560
|
+
* Fix reporting https only on a true SSL connection
|
|
561
|
+
* Set the default content type to 'text/plain'. Fixes #63
|
|
562
|
+
* Use REUSEADDR. Fixes #60
|
|
563
|
+
* Shutdown gracefull on SIGTERM. Fixes #53
|
|
564
|
+
|
|
565
|
+
2 new contributers:
|
|
566
|
+
|
|
567
|
+
* Seamus Abshere
|
|
568
|
+
* Steve Richert
|
|
569
|
+
|
|
570
|
+
=== 1.1.1 / 2012-03-30
|
|
571
|
+
|
|
572
|
+
1 bugfix:
|
|
573
|
+
|
|
574
|
+
* Include puma/compat.rb in the gem (oops!)
|
|
575
|
+
|
|
576
|
+
=== 1.1.0 / 2012-03-30
|
|
577
|
+
|
|
578
|
+
1 bugfix:
|
|
579
|
+
|
|
580
|
+
* Make sure that the unix socket has the perms 0777 by default
|
|
581
|
+
|
|
582
|
+
1 minor feature:
|
|
583
|
+
|
|
584
|
+
* Add umask param to the unix:// bind to set the umask
|
|
585
|
+
|
|
586
|
+
=== 1.0.0 / 2012-03-29
|
|
587
|
+
|
|
588
|
+
* Released!
|