Skip to content

perf: make unchanged data free with conditional requests - #62

Merged
Skeyelab merged 1 commit into
perf/bounded-fanoutfrom
perf/conditional-requests
Sep 29, 2026
Merged

Skeyelab merged 1 commit into
perf/bounded-fanoutfrom
perf/conditional-requests

Conversation

@Skeyelab

Copy link
Copy Markdown
Member

Every GET now carries If-None-Match with the ETag GitHub last sent for
that URL. A 304 costs no REST budget; the transport replays the stored
body as a 200, with the 304's fresh rate-limit headers so Pacing sees
the live budget. Replayed responses are not counted toward a cycle's
measured cost. The GraphQL POST passes straight through.

The poller now gets one client per token for the life of the app
(githubclient.Pool) so each token's cache survives between cycles; it
used to build a new client per Repo per cycle. The cache is capped at
2000 responses per token, least recently used first.

Closes #39


Stack created with GitHub Stacks CLI • Give Feedback 💬

@Skeyelab
Skeyelab added this pull request to stack #63 September 29, 2026 03:35
Every GET now carries If-None-Match with the ETag GitHub last sent for
that URL. A 304 costs no REST budget; the transport replays the stored
body as a 200, with the 304's fresh rate-limit headers so Pacing sees
the live budget. Replayed responses are not counted toward a cycle's
measured cost. The GraphQL POST passes straight through.

The poller now gets one client per token for the life of the app
(githubclient.Pool) so each token's cache survives between cycles; it
used to build a new client per Repo per cycle. The cache is capped at
2000 responses per token, least recently used first.

Closes #39
@Skeyelab
Skeyelab force-pushed the perf/conditional-requests branch from 20f08ac to d03ddaa Compare September 29, 2026 03:37
@Skeyelab
Skeyelab merged commit d99800c into main Sep 29, 2026
6 checks passed
@Skeyelab
Skeyelab deleted the perf/conditional-requests branch September 29, 2026 03:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use conditional requests so unchanged data is free

1 participant