wendell-puma 2.9.2
Sign up to get free protection for your applications and to get access to all the features.
- 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!
|