Fix #65: bound Starred-list fan-out #68
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!68
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-65"
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?
Bounds the Starred-list fan-out (#65): Starred() LISTed the whole users/
/starred/ prefix and GET+HEADed every record to sort newest-first, then truncated — O(total stars) round trips per page load.
Shape (no reverse index, no users LIST, no global scan):
Sibling surfaces audited, no change needed: no watching-list endpoint exists (single-record GetWatch; watcher_list capped at 1000 by the writer); notification tray LIST overflow already capped at 1000 GETs; releases list capped via ListScanCap; release fan-out reads the capped watcher_list. Starred was the only unbounded read, as the issue states.
Docs (law 12): 07 section 7 table + Decisions entry record the repo-order change; E8 budget row/analysis updated (page 1: 1 LIST + 51 GETs + 51 HEADs at both 60 and 600 stars; page 2 probes only the remainder); SDK comment updated.
Tests: TestStarredLists re-pinned to key order; new table-driven TestStarredPagesTable (HTTP twins: pages, ghost/corrupt skips mid-walk, n clamp, exhausted-page []-not-null, malformed-cursor 400); evidence test pins flat page-1 cost across 3/60/600 stars plus a no-overlap two-page walk at 60. gofmt/vet clean; go test -race passes; cover 99.2% (gate >=95%).
Note: TestStarConcurrentConverge flakes on unmodified origin/main too (fails with and without -race; extra star bump from the (c) resync racing an in-flight first bump) — pre-existing, untouched by this change, left for its own issue.