refactor(pxe): batch tagged private log queries across all secrets#23048
Merged
nchamo merged 1 commit intomerge-train/fairiesfrom May 8, 2026
Merged
refactor(pxe): batch tagged private log queries across all secrets#23048nchamo merged 1 commit intomerge-train/fairiesfrom
nchamo merged 1 commit intomerge-train/fairiesfrom
Conversation
Collaborator
Flakey Tests🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry. |
Thunkar
approved these changes
May 7, 2026
Contributor
Thunkar
left a comment
There was a problem hiding this comment.
I'd also tag @benesjan since he has the most experience on this code. When I initially implemented note syncing it looked a lot like this, but eventually evolved to the current form. I like this approach a lot, but I'd like to get his input
AztecBot
pushed a commit
that referenced
this pull request
May 8, 2026
Collaborator
|
✅ Successfully backported to backport-to-v4-next-staging #23080. |
This was referenced May 8, 2026
AztecBot
added a commit
that referenced
this pull request
May 9, 2026
BEGIN_COMMIT_OVERRIDE fix(aztec-up): Aztec installer does not shadow user installed binaries on PATH (#22902) fix: include sqlite binary in its npm package (#23039) chore: backport #23041 (add sendMessagesAs to wallet api schemas) to v4-next (#23081) chore: backport DeployMethod refactor (#22985) to v4-next (#23029) refactor(pxe): deduplicate tx hash lookups in MessageContextService (#23075) refactor(pxe): batch tagged private log queries across all secrets (#23048) refactor(pxe): batch log RPC calls in LogService.fetchLogsByTag (#23088) feat(aztec-nr): Initial handshake registry contract with non interactive handshake function (#22854) fix: add Tag.random() helper required by backported #23088 tests (#23094) chore: backport: fix(aztec-up): installer does not shadow user binaries on PATH (#22902) (#23060) chore: backport handshake registry contract (#22854) to v4-next (#23063) feat: deploy method refactor 2 (#23033) refactor(pxe): skip redundant getBlock RPC when querying at anchor block (#23100) port(v4-next): feat(docs): autogenerate node JSON-RPC API reference (#22543) (#23046) chore: backport feat: deploy method refactor 2 (#23033) to v4-next (#23103) port(v4-next): feat(ci): Snapshots for aztec-nr contract compilation failures and nargo expand (#23061) (#23104) feat(txe): allow authorizing cross-contract utility calls in nr tests (#23064) END_COMMIT_OVERRIDE
github-merge-queue Bot
pushed a commit
that referenced
this pull request
May 10, 2026
BEGIN_COMMIT_OVERRIDE fix: include sqlite binary in its npm package (#23039) fix: add sendMessagesAs to wallet api schemas (#23041) refactor(pxe): deduplicate tx hash lookups in MessageContextService (#23075) refactor(pxe): batch tagged private log queries across all secrets (#23048) refactor(pxe): batch log RPC calls in LogService.fetchLogsByTag (#23088) feat(pxe,nr): flesh out account stubs and don't exclude syncing for overrides (#23054) feat: deploy method refactor 2 (#23033) feat: fastForwardContractUpdate cheatcode for simulating contract updates (#22905) refactor(stdlib): consolidate find-function-by-selector helpers (#23008) feat(ci): Snapshots for aztec-nr contract compilation failures and nargo expand (#23061) chore: kv store test fully on vitest (#23096) refactor(pxe): skip redundant getBlock RPC when querying at anchor block (#23100) chore(playground): bump main chunk size limit 1750 → 1800 KB (#23107) feat(txe): allow authorizing cross-contract utility calls in nr tests (#23064) chore: bench public fns with emit repro (#23105) END_COMMIT_OVERRIDE
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.
Why we are doing this
Previously,
LogService.fetchTaggedLogsran oneloadPrivateLogsForSenderRecipientPaircall per sender-recipient secret, all in parallel viaPromise.all. Each of those calls independently issued RPC requests to fetch logs by tag. With many secrets (many senders), this produced N concurrent RPC round-trips to the node — one per secret per iteration.Our fix
Replace the per-pair function with
syncTaggedPrivateLogs, which accepts all secrets at once and merges their tags into a single flat array before callinggetAllPrivateLogsByTags. That function already chunks internally atMAX_RPC_LEN, so the total number of node calls scales with the total number of tags across all secrets rather than the number of secrets.The sync loop still advances windows per-secret (only secrets whose finalized index moved forward go into the next round), so correctness is unchanged. The two deleted files (
load_private_logs_for_sender_recipient_pair.tsandutils/load_logs_for_range.ts) are fully subsumed by the newsync_tagged_private_logs.ts.