Actions
Feature #36357
closedUpgrade Puma to 6.x
Description
Upgrade to Puma 6+ to achieve better performance and keep the dependency up to date. Puma 6 touts greater performance than previous versions, Foreman should take advantage of this and test it for our scenarios.
See https://github.com/puma/puma/blob/master/6.0-Upgrade.md for upgrade info
Updated by Evgeni Golov over 1 year ago
Checking the upgrade checklist from https://github.com/puma/puma/blob/master/6.0-Upgrade.md:
- Configuration constants like DefaultRackup removed, see #2928 for the full list.
- We do not use any of these constants
- We have changed the names of the following environment variables: DISABLE_SSL is now PUMA_DISABLE_SSL, MAKE_WARNINGS_INTO_ERRORS is now PUMA_MAKE_WARNINGS_INTO_ERRORS, and WAIT_FOR_LESS_BUSY_WORKERS is now PUMA_WAIT_FOR_LESS_BUSY_WORKERS.
- We do not use any of these environment variables.
- Nakayoshi GC (nakayoshi_fork option in config) has been removed without replacement.
- We do not use nakayoshi_fork
- wait_for_less_busy_worker is now on by default. If you don't want to use this feature, you must add wait_for_less_busy_worker false in your config.
- Cool
- We've removed the following public methods on Puma::Server: Puma::Server#min_threads, Puma::Server#max_threads. Instead, you can pass in configuration as an option to Puma::Server#new. This might make certain gems break (capybara for example).
- We do not use any of these methods. Need to double check if https://github.com/ylecuyer/puma-status is happy with that
- We've removed the following constants: Puma::StateFile::FIELDS, Puma::CLI::KEYS_NOT_TO_PERSIST_IN_STATE and Puma::Launcher::KEYS_NOT_TO_PERSIST_IN_STATE, and Puma::ControlCLI::COMMANDS.
- We do not use any of these constats
- We no longer support Ruby 2.2, 2.3, or JRuby on Java 1.7 or below.
- We only need 2.7+
- The behavior of remote_addr has changed. When using the set_remote_address header: "header_name" functionality, if the header is not passed, REMOTE_ADDR is now set to the physical peeraddr instead of always being set to 127.0.0.1. When an error occurs preventing the physical peeraddr from being fetched, REMOTE_ADDR is now set to the unspecified source address ('0.0.0.0') instead of to '127.0.0.1'
- This shouldn't affect us, as we do not use set_remote_address (and thus default to its "socket" value)
- Previously, Puma supported anything as an HTTP method and passed it to the app. We now only accept the 8 HTTP methods defined in RFC 9110.
- I don't think we use any non-standard HTTP vers
Updated by The Foreman Bot over 1 year ago
- Status changed from New to Ready For Testing
- Pull request https://github.com/theforeman/foreman/pull/9699 added
Updated by Evgeni Golov over 1 year ago
puma-status still works:
[root@centos8-stream-katello-nightly ~]# rpm -q rubygem-puma rubygem-puma-6.2.2-1.el8.x86_64 [root@centos8-stream-katello-nightly ~]# foreman-puma-status 3995 (/usr/share/foreman/tmp/puma.state) Uptime: 0m17s | Phase: 0 | Load: 0[░░░░░░░░░░░░░░░]15 | Req: 0 └ 4031 CPU: 0.0% Mem: 363 MB Uptime: 0m16s | Load: 0[░░░░░]5 | Req: 0 └ 4032 CPU: 0.0% Mem: 363 MB Uptime: 0m16s | Load: 0[░░░░░]5 | Req: 0 └ 4033 CPU: 0.0% Mem: 362 MB Uptime: 0m16s | Load: 0[░░░░░]5 | Req: 0
Updated by Evgeni Golov over 1 year ago
- Status changed from Ready For Testing to Closed
Applied in changeset foreman|6b35aa2f47aaa4de51e07855f5042e5db1f4a07e.
Updated by Ewoud Kohl van Wijngaarden over 1 year ago
- Category changed from Rails to Packaging
- Triaged changed from No to Yes
Actions