mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-01 10:11:30 +08:00
The arbiter respawned the companion manager on every main-loop tick once its pid cleared, so a manager that could not boot would busy-spin. It also logged every manager exit as an error, including the deliberate exits from shutdown and reload. Track whether a manager exit was on purpose: stop_companion_manager marks it expected and clears any backoff, so the reaper logs it as info and a reload respawns without delay. An unexpected exit now arms an exponential crash backoff (2^(n-1)s, capped at 30s) that the main loop waits out before respawning, and is logged as an error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>