Skip to content
This repository was archived by the owner on Oct 23, 2026. It is now read-only.

fix: do not retry a missing GraphQL alias, and stop the thread pass after 10 minutes - #112

Merged
AlxcBTW merged 1 commit into
mainfrom
fix/slow-thread-pass
Oct 21, 2026
Merged

AlxcBTW merged 1 commit into
mainfrom
fix/slow-thread-pass

Conversation

@AlxcBTW

@AlxcBTW AlxcBTW commented Oct 21, 2026

Copy link
Copy Markdown
Owner

Follows #108 (thanks @savvaniss) and fixes #107 at the cause.

Run 39296621500 (last success, 19 Oct) already took 19 min; the log shows why:

  • A deleted or transferred number in a thread query answers NOT_FOUND for that alias only. gh exits 1, _gh treats it as transient and sleeps 2+4+8 s, then fetch_threads bisects the batch (25, 13, 6, 3, 2, 1). That is about 80 s per number, ten numbers per run (about 13 min), and the numbers were never cached, so every run paid again.
  • The error body holds PR titles; one contained "rate limit", so is_primary_limit ended the pass with 684 threads unread.
  • On 19/20 Oct the weekly full listing (about 6 min) came due and the cached threads passed their 24-47 h TTL. Runs hit 20 min, were cancelled, and a cancelled run saved nothing, so it started cold again.

Changes:

  • gh_graphql returns the data when the only errors are NOT_FOUND (null for the alias); no retry, no bisecting.
  • A gone thread gets an empty cache entry (cached until its TTL).
  • The thread pass stops after THREAD_BUDGET_SECONDS (10 min); the site builds and deploys with what it has and the next run carries on (api.partial, with the reason in truncated).
  • Tests for all three; AGENTS.md updated.

AI-assisted: yes (Claude Code)

…fter 10 minutes (#107)

A GraphQL NOT_FOUND for one alias (a deleted or transferred number) made gh exit 1; _gh
retried it as transient (14 s of sleeps) and the thread pass bisected the batch, about
80 s per number and ten numbers a run, every run, since gone threads were never cached.
Their PR titles in the body could also match 'rate limit' and end the pass early.

gh_graphql now returns the data when the only errors are NOT_FOUND, a gone thread gets
an empty cache entry, and the pass has a 10 minute budget so a cold-cache run still builds
and deploys with what it has.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

mining How roadmap.py reads issues and PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Site not rebuilt since 19 Oct 17:44 UTC: every Roadmap run since hits the 20-minute timeout in Build site

1 participant