ton: fix yet another internal unbound long-lived cache - #388
Open
andrevmatos wants to merge 4 commits into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
👋 andrevmatos, thanks for creating this pull request! To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team. Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks! |
aelmanaa
previously approved these changes
Aug 28, 2026
andrevmatos
added a commit
that referenced
this pull request
Aug 29, 2026
A covering commit_report PDA with zero retained signatures proves the commit tx is outside the endpoint's retention; the generic offRamp fallback walks the whole retained history (one getTransaction per tx) and can never surface it — the unbounded crawl behind the 120s show e2e timeout on month-old fixtures. Throw CCIPCommitHistoryPrunedError instead, and narrow v1 receipt scans to the covering PDA when verifications are unavailable. Generic receipt scans now also filter by sequenceNumber. Refresh the out-of-retention sepolia<->solana-devnet show e2e fixtures from the CCIP API (both 404'd there and were pruned on onfinality). Refs #388
A covering commit_report PDA with zero retained signatures proves the commit tx is outside the endpoint's retention; the generic offRamp fallback walks the whole retained history (one getTransaction per tx) and can never surface it — the unbounded crawl behind the 120s show e2e timeout on month-old fixtures. Throw CCIPCommitHistoryPrunedError instead, and narrow v1 receipt scans to the covering PDA when verifications are unavailable. Generic receipt scans now also filter by sequenceNumber. Refresh the out-of-retention sepolia<->solana-devnet show e2e fixtures from the CCIP API (both 404'd there and were pruned on onfinality). Refs #388
The merged signal (caller signal + ctx abort) was re-wrapped on every retry attempt, nesting a fresh AbortSignal.any() composite over the previous attempt's — depth equal to the retry count. Wrappers that never abort keep their abort listener registered (Node's gcPersistentSignals holds them while any source lives). Compose once before the retry loop instead; the regression test asserts all attempts share the same signal object.
waitFinalized's watch composite never aborted on the success path, leaving the derived getLogs watch chain's once-listeners attached (pinned by gcPersistentSignals until a source fires). Give waitFinalized an owned AbortController folded into the composite, aborted in the finally so the whole derived chain drops its listeners on every exit. The post-finally cancellation check now reads the external signals directly, since the composite is always aborted by then. Test asserts the watch signal handed to getLogs is aborted on success while chain.abort and the caller's signal stay clean.
Coverage Report |
aelmanaa
approved these changes
Aug 29, 2026
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.
No description provided.