fix(knowledge): cache the ingestion usage gate for a minute - #7725
Merged
Merged
Conversation
Every document run checked the payer's spend by summing the usage ledger for the billing period. The ledger grows with every indexed document, so a bulk connector sync re-read the whole period's ledger once per document: 41,000 sums over roughly 436,000 rows each during one crawl, which was the largest single database consumer while it ran and slowed unrelated queries, including search. Background ingestion now reads the gate through a per-process LRU cache keyed by payer, billing period and acting member, with a 60-second TTL and coalesced misses. Staleness fails in the harmless direction: a payer at their limit indexes for at most another minute, and a raised limit takes at most a minute to apply. Interactive callers keep reading the gate fresh. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JBacX6HGVhPMUySuMfANwn
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
lru-cachekeyed by payer, billing period and acting member, 60 s TTL, misses coalesced withcoalesceLocally. Staleness is bounded in the safe direction: a payer at the limit indexes for at most another minute; a raised limit applies within a minutecheckAttributedUsageLimitsfresh, following theisOrganizationBYOKEntitledCachedprecedentType of Change
Testing
ingestion-usage-gate.test.ts: one ledger read per payer/period/actor within the TTL, concurrent misses coalesced, refusals cached and re-read after expiry, distinct keys per actor/period/payer, failed reads not cachedlib/knowledge/documents,lib/billing/core,background/knowledge-processing: 746 passingbun run type-check,bun run lint,bun run check:audits,docs-manifest:checkpassChecklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01JBacX6HGVhPMUySuMfANwn