Let fx own signals and the exit code in the server example (closes #86)
check / check (push) Failing after 2s
check / check (push) Failing after 2s
The server lifecycle example in `prompts/GO_HTTP_SERVER_CONVENTIONS.md` dropped its exit code, installed its own SIGINT/SIGTERM handler beside the one fx's `Run()` installs, and exited from a goroutine when Sentry could not start, so no stop hook ran. fx now owns signals and the exit code: `main` calls `Run()`; a listen error shuts fx down with `fx.ExitCode(1)` through `fx.Shutdowner`; `enableSentry()` returns its error from the start hook; the stop hook shuts the HTTP server down within 5 seconds, flushes Sentry, and fails when requests are still running. The start hook builds the HTTP server before the listen goroutine so the stop hook can reach it. A new paragraph says who owns signals and the exit code. Model: opus-5-5
This commit was merged in pull request #94.
This commit is contained in:
@@ -21,6 +21,15 @@ fmt-check, and commit.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-04: Fixed the server lifecycle example in
|
||||
`prompts/GO_HTTP_SERVER_CONVENTIONS.md` (issue 86). Only fx handles SIGINT and
|
||||
SIGTERM, and `Run()` in `main` exits with the shutdown's exit code. A listen
|
||||
error asks fx to shut down with exit code 1 through `fx.Shutdowner`; a Sentry
|
||||
start failure is returned from the server's start hook instead of calling
|
||||
`os.Exit` from a goroutine, so the stop hooks of what had started still run.
|
||||
The server's stop hook shuts the HTTP server down within 5 seconds and fails
|
||||
when requests are still running. A new paragraph says who owns signals and the
|
||||
exit code.
|
||||
- 2026-10-04: `REPO_POLICIES.md` now says how a Go tool a repo needs on the host
|
||||
is pinned (issue 37): installed with `go install` pinned to a commit hash,
|
||||
never tracked as a `go.mod` tool dependency or through a `tools.go` file.
|
||||
|
||||
Reference in New Issue
Block a user