Fix #153: bound fan-out goroutines #159
No reviewers
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub!159
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-153"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Acquire-before-spawn on all fan-out paths (resolve, createAll, fanoutOne, DeliverRepo): the cap-8 semaphore slot is now taken in the parent loop before
go, so in-flight fan-out goroutines are bounded by construction regardless of recipient/hook count. Budget/failed-recipient accounting unchanged.Regression tests (internal/notify/fanout_bound_test.go): park large fan-outs (200 recipients x3, 64 hooks) on a gate with 8 workers in flight and assert process goroutine delta <= 40. Verified to FAIL on pre-fix code (deltas 201/201/201/89) and pass after.
Checks: gofmt clean, go vet clean, go test -race full internal/notify package green, coverage 96.0% (>= 95% gate). Doc Decisions entry in docs/features/06_notifications.md (law 12).
Fix ready for review: #159 (branch fix/issue-153). Acquire-before-spawn on resolve/createAll/fanoutOne/DeliverRepo; regression tests fail pre-fix (deltas 201/201/201/89) and pass after; package suite green -race, coverage 96.0%.
goin fan-out paths #153goin fan-out paths #153goin fan-out paths #153