Conservative improvements to syncing#1365
Merged
Merged
Conversation
* Add cache for multi asset id to avoid excessive joins * change file * fix npm audit * Apply suggestion from @gilescope --------- Co-authored-by: Squirrel <giles.cope@shielded.io> Signed-off-by: Giles Cope <gilescope@gmail.com>
…y_hash Needed because cherry-pick landed in a branch whose .sqlx prepared cache does not include this query (cached key changed after trailing-whitespace normalisation). Using the runtime form avoids the compile-time DB check entirely and matches the pattern used elsewhere in #934. Signed-off-by: Giles Cope <gilescope@gmail.com>
First query for coarse bounds of tx, tx_out and ma_tx_out tables and use them in the 'business' queries to reduce size of tables before joins are made. Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Convert the runtime query_as form back to the compile-time macro form for all queries in cnight_observation.rs. This restores static query verification against the db-sync schema via the .sqlx prepared cache. Signed-off-by: Oscar Bailey <79094698+ozgb@users.noreply.github.com>
ed988f1 to
d9d1c78
Compare
Resolves high/moderate severity vulnerabilities in axios, brace-expansion, follow-redirects, lodash, picomatch, yaml, vite, and effect. Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
ozgb
previously approved these changes
Apr 20, 2026
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
cosmir17
previously approved these changes
Apr 20, 2026
cosmir17
left a comment
Contributor
There was a problem hiding this comment.
LGTM, thanks for pushing through this one. The perf gains look solid.
gilescope
commented
Apr 20, 2026
cosmir17
approved these changes
Apr 20, 2026
justinfrevert
approved these changes
Apr 21, 2026
gilescope
added a commit
that referenced
this pull request
Apr 27, 2026
…y args Replaces the seven repeated arguments (start, end, limit, offset, low_bound, high_bound + per-call locals) on the four cNight observation query helpers with a single `PagedQuery<'a>` struct. Squashed from PR #1365 fixup commits b9497e8 + b146dc2 + b1ffce6 (originally landed as "fix: cargo clippy" / "Apply suggestion"). Also drops the now-unused `QueryBounds` import in the data_source module.
gilescope
added a commit
that referenced
this pull request
Apr 27, 2026
…y args Replaces the seven repeated arguments (start, end, limit, offset, low_bound, high_bound + per-call locals) on the four cNight observation query helpers with a single `PagedQuery<'a>` struct. Squashed from PR #1365 fixup commits b9497e8 + b146dc2 + b1ffce6 (originally landed as "fix: cargo clippy" / "Apply suggestion"). Also drops the now-unused `QueryBounds` import in the data_source module. Signed-off-by: Giles Cope <gilescope@gmail.com>
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Apr 27, 2026
* Increase performance of cNight db-sync queries. First query for coarse bounds of tx, tx_out and ma_tx_out tables and use them in the 'business' queries to reduce size of tables before joins are made. Signed-off-by: Giles Cope <gilescope@gmail.com> * Add tx_in indexes as well Signed-off-by: Giles Cope <gilescope@gmail.com> * refactor: use sqlx::query_as! macro for cNight observation queries Convert the runtime query_as form back to the compile-time macro form for all queries in cnight_observation.rs. This restores static query verification against the db-sync schema via the .sqlx prepared cache. Signed-off-by: Oscar Bailey <79094698+ozgb@users.noreply.github.com> Signed-off-by: Giles Cope <gilescope@gmail.com> * chore: replace sqlx::query_as! macro with runtime form in get_block_by_hash Needed because cherry-pick landed in a branch whose .sqlx prepared cache does not include this query (cached key changed after trailing-whitespace normalisation). Using the runtime form avoids the compile-time DB check entirely and matches the pattern used elsewhere in #934. Signed-off-by: Giles Cope <gilescope@gmail.com> * feat: add changefile Signed-off-by: Giles Cope <gilescope@gmail.com> * fix: should be debug not warn Signed-off-by: Giles Cope <gilescope@gmail.com> * refactor: introduce PagedQuery to consolidate cNight observation query args Replaces the seven repeated arguments (start, end, limit, offset, low_bound, high_bound + per-call locals) on the four cNight observation query helpers with a single `PagedQuery<'a>` struct. Squashed from PR #1365 fixup commits b9497e8 + b146dc2 + b1ffce6 (originally landed as "fix: cargo clippy" / "Apply suggestion"). Also drops the now-unused `QueryBounds` import in the data_source module. Signed-off-by: Giles Cope <gilescope@gmail.com> * fix: clippy needless borrow in get_block_by_hash bind Signed-off-by: Giles Cope <gilescope@gmail.com> * fix: fixed compilation for try-runtime feature (#1427) Signed-off-by: Tomasz Bartos <tomasz.bartos@shielded.io> Signed-off-by: Giles Cope <gilescope@gmail.com> --------- Signed-off-by: Giles Cope <gilescope@gmail.com> Signed-off-by: Oscar Bailey <79094698+ozgb@users.noreply.github.com> Signed-off-by: Tomasz Bartos <tomasz.bartos@shielded.io> Co-authored-by: Lech Głowiak <lech.glowiak@iohk.io> Co-authored-by: Lech Głowiak <lech.glowiak@shielded.io> Co-authored-by: Oscar Bailey <79094698+ozgb@users.noreply.github.com> Co-authored-by: Klapeyron <11329616+Klapeyron@users.noreply.github.com>
15 tasks
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.
Overview
Back-ports four conservative performance fixes to the cNIGHT db-sync observation path onto
release/node-0.22.5. Bundles upstream work from #934 plus follow-ups into the release branch.The four commits:
(policy, asset_name)→multi_asset.identonce viaMultiAssetCache, eliminating theJOIN multi_assetfrom every subsequent observation query. Also includes a change file (changes/changed/cache-multi-asset-id.md) and tidies candidate-data-source decoding.tx/tx_out/ma_tx_outid bounds for the block-range window, then constrains the four observation queries (registration / deregistration / asset-create / asset-spend) by primary-key range. Postgres can then prune rows before the expensive joins. Old compile-time sqlx cache entries are replaced.tx_inindexes as well — adds thetx.idbounding to thetx_in-keyed queries (spend / deregistration) so they benefit from the same pruning.Net effect: significantly lower postgres CPU / query latency during cNIGHT observation, no behavioural change.
🗹 TODO before merging
📌 Submission Checklist
changes/changed/cache-multi-asset-id.mdcovers Add cache for multi asset id to avoid excessive joins #934; the other three commits are perf fixes to the same path with no user-visible surface change.🧪 Testing Evidence
Observed reduced db-sync query times on a live cNIGHT observation workload.
🔱 Fork Strategy
Links
Upstream: #934