Skip to content

Preserve reload worker failure exit status - #372

Open
hansu650 wants to merge 1 commit into
pgjones:mainfrom
hansu650:fix/reload-failure-exit-code
Open

Preserve reload worker failure exit status#372
hansu650 wants to merge 1 commit into
pgjones:mainfrom
hansu650:fix/reload-failure-exit-code

Conversation

@hansu650

Copy link
Copy Markdown

Fixes #269.

When a reloaded worker failed (for example, while importing an application with a new syntax error),
un() initially captured its non-zero exit code and removed the failed process. The final cleanup then called _join_exited() again on the now-empty process list and assigned its zero result back to �xitcode, so the CLI reported success.

This keeps the cleanup join but preserves the already-recorded failure code. The regression test models a clean initial worker reload followed by a replacement worker exiting with status 1.

Validation:

  • Manual hypercorn --reload reproduction: syntax error changed the shell status from 0 before the fix to 1 after it
  • pytest tests/test_run.py -q (1 passed)
  • Black, isort, and flake8 checks pass
  • mypy src/hypercorn/run.py tests/test_run.py passes
  • sdist/wheel build and wine check pass

The full Windows test run reaches 190 passed with 7 unrelated baseline failures in Unix-only socket/path tests, e2e binding, and HTTP/2 CONNECT validation against the latest h2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

hypercorn autoreload return exit status 0 when reloading encounters Python SyntaxError

1 participant