From ea00232365d282e243a9466b45c0a5990250847c Mon Sep 17 00:00:00 2001 From: Rosa Gutierrez Date: Wed, 18 Feb 2026 21:33:45 +0100 Subject: [PATCH] Guard against nil pid in Puma plugin stop When fork fails silently in restricted container environments, `solid_queue_pid` remains `nil`. On shutdown, Puma fires the stopped event and `stop_solid_queue_fork` is called, where `Process.waitpid(nil)` raises `TypeError`. Add an early return when `solid_queue_pid` is nil, and remove the now-redundant conditional on `Process.kill`. Related to #628 and #617 Co-Authored-By: Claude Opus 4.6 --- lib/puma/plugin/solid_queue.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/puma/plugin/solid_queue.rb b/lib/puma/plugin/solid_queue.rb index 38806277..8a7aea28 100644 --- a/lib/puma/plugin/solid_queue.rb +++ b/lib/puma/plugin/solid_queue.rb @@ -82,9 +82,11 @@ def start_solid_queue(**options) end def stop_solid_queue_fork + return unless solid_queue_pid + Process.waitpid(solid_queue_pid, Process::WNOHANG) log "Stopping Solid Queue..." - Process.kill(:INT, solid_queue_pid) if solid_queue_pid + Process.kill(:INT, solid_queue_pid) Process.wait(solid_queue_pid) rescue Errno::ECHILD, Errno::ESRCH end