From d2c85e3cc680c7637b145f121b370dd36a8d73c2 Mon Sep 17 00:00:00 2001
From: Aleksei Lipniagov <alipniagov@gitlab.com>
Date: Tue, 12 Jan 2021 16:34:42 +0300
Subject: [PATCH] Use Puma `nakayoshi_fork`

https://github.com/puma/puma/blob/master/5.0-Upgrade.md#nakayoshi_fork
Enabled by default. ENV var for better control.
---
 config/puma.example.development.rb             | 7 ++++---
 config/puma.rb.example                         | 7 ++++---
 config/puma_actioncable.example.development.rb | 7 ++++---
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/config/puma.example.development.rb b/config/puma.example.development.rb
index 7e616ee476807..95a10dd1dfd4d 100644
--- a/config/puma.example.development.rb
+++ b/config/puma.example.development.rb
@@ -80,9 +80,10 @@
 worker_timeout 60
 
 # https://github.com/puma/puma/blob/master/5.0-Upgrade.md#lower-latency-better-throughput
-if defined?(wait_for_less_busy_worker)
-  wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
-end
+wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
+
+# https://github.com/puma/puma/blob/master/5.0-Upgrade.md#nakayoshi_fork
+nakayoshi_fork ActiveModel::Type::Boolean.new.cast(ENV.fetch('PUMA_NAKAYOSHI_FORK_ENABLED', true))
 
 # Use json formatter
 require_relative "/home/git/gitlab/lib/gitlab/puma_logging/json_formatter"
diff --git a/config/puma.rb.example b/config/puma.rb.example
index 25e3862626070..073533912ec17 100644
--- a/config/puma.rb.example
+++ b/config/puma.rb.example
@@ -70,9 +70,10 @@ tag 'gitlab-puma-worker'
 worker_timeout 60
 
 # https://github.com/puma/puma/blob/master/5.0-Upgrade.md#lower-latency-better-throughput
-if defined?(wait_for_less_busy_worker)
-  wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
-end
+wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
+
+# https://github.com/puma/puma/blob/master/5.0-Upgrade.md#nakayoshi_fork
+nakayoshi_fork ActiveModel::Type::Boolean.new.cast(ENV.fetch('PUMA_NAKAYOSHI_FORK_ENABLED', true))
 
 # Use json formatter
 require_relative "/home/git/gitlab/lib/gitlab/puma_logging/json_formatter"
diff --git a/config/puma_actioncable.example.development.rb b/config/puma_actioncable.example.development.rb
index 106932606e0e2..4ca1d0a3cd50b 100644
--- a/config/puma_actioncable.example.development.rb
+++ b/config/puma_actioncable.example.development.rb
@@ -80,9 +80,10 @@
 worker_timeout 60
 
 # https://github.com/puma/puma/blob/master/5.0-Upgrade.md#lower-latency-better-throughput
-if defined?(wait_for_less_busy_worker)
-  wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
-end
+wait_for_less_busy_worker ENV.fetch('PUMA_WAIT_FOR_LESS_BUSY_WORKER', 0.001).to_f
+
+# https://github.com/puma/puma/blob/master/5.0-Upgrade.md#nakayoshi_fork
+nakayoshi_fork ActiveModel::Type::Boolean.new.cast(ENV.fetch('PUMA_NAKAYOSHI_FORK_ENABLED', true))
 
 # Use json formatter
 require_relative "/home/git/gitlab/lib/gitlab/puma_logging/json_formatter"
-- 
GitLab