Brings the fix for #104 to main, and nothing else. main is red: the make test step of the Docker build fails on data races in the internal/handlers and internal/ircserver tests.
This branch is the commit that #105 squashed into next (915f56e), whose parent is the current main, so the diff is exactly that fix:
The HTTP router is built in the server's start hook (configure, enableSentry, SetupRoutes, in that order) before serving starts, so a started server has its routes.
The goroutine that sends queued messages to an IRC client reads the client's nick under its lock.
Both go test runs in make test use -timeout 120s: internal/handlers takes over 30s under -race in the Docker build.
Done when main passes docker build --no-cache . from a fresh clone. prod changes only by the owner's deploy.
Model: opus-5-5
Brings the fix for https://git.eeqj.de/sneak/neoirc/issues/104 to `main`, and nothing else. `main` is red: the `make test` step of the Docker build fails on data races in the `internal/handlers` and `internal/ircserver` tests.
This branch is the commit that https://git.eeqj.de/sneak/neoirc/pulls/105 squashed into `next` (`915f56e`), whose parent is the current `main`, so the diff is exactly that fix:
- The HTTP router is built in the server's start hook (configure, enableSentry, SetupRoutes, in that order) before serving starts, so a started server has its routes.
- The goroutine that sends queued messages to an IRC client reads the client's nick under its lock.
- Both `go test` runs in `make test` use `-timeout 120s`: `internal/handlers` takes over 30s under `-race` in the Docker build.
Done when `main` passes `docker build --no-cache .` from a fresh clone. `prod` changes only by the owner's deploy.
Model: opus-5-5
The HTTP server built its router inside the goroutine that starts
serving, so the start hook returned before the router existed, and
the internal/handlers tests raced with it or hit a nil router. The
start hook now runs configure, enableSentry and SetupRoutes, in that
order, then serves in the background.
The goroutine that sends queued messages to an IRC client read c.nick
without c.mu while NICK changed it. Every such read now takes the lock.
Under -race in the Docker build, internal/handlers takes over 30s on
database work, not clock waits, so both go test runs in make test use
-timeout 120s. The || retry stays
(#101).
Model: opus-5-5
PASS: this brings only the fix for #104 to main, the same change reviewed in #105, and it removes both data races without skipping, deleting or changing any test.
Judgement call: the 120-second go test timeout departs from the 30-second timeout in REPO_POLICIES.md; accepted on the ruling at #105 (comment).
Judgement call: building the router in the server's start hook departs from the server start-up example in CONVENTIONS.md; the plan on #104 prescribes it.
Model: opus-5-5
**PASS**: this brings only the fix for https://git.eeqj.de/sneak/neoirc/issues/104 to `main`, the same change reviewed in https://git.eeqj.de/sneak/neoirc/pulls/105, and it removes both data races without skipping, deleting or changing any test.
- Judgement call: the 120-second `go test` timeout departs from the 30-second timeout in `REPO_POLICIES.md`; accepted on the ruling at https://git.eeqj.de/sneak/neoirc/pulls/105#issuecomment-110018.
- Judgement call: building the router in the server's start hook departs from the server start-up example in `CONVENTIONS.md`; the plan on https://git.eeqj.de/sneak/neoirc/issues/104 prescribes it.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Brings the fix for #104 to
main, and nothing else.mainis red: themake teststep of the Docker build fails on data races in theinternal/handlersandinternal/ircservertests.This branch is the commit that #105 squashed into
next(915f56e), whose parent is the currentmain, so the diff is exactly that fix:go testruns inmake testuse-timeout 120s:internal/handlerstakes over 30s under-racein the Docker build.Done when
mainpassesdocker build --no-cache .from a fresh clone.prodchanges only by the owner's deploy.Model: opus-5-5
PASS: this brings only the fix for #104 to
main, the same change reviewed in #105, and it removes both data races without skipping, deleting or changing any test.go testtimeout departs from the 30-second timeout inREPO_POLICIES.md; accepted on the ruling at #105 (comment).CONVENTIONS.md; the plan on #104 prescribes it.Model: opus-5-5