fix: seed in-memory metrics from DB on startup#97
Merged
Conversation
Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com>
The previous filter (ClientRead + 30s) missed active COPY operations from the old container, causing migrations to block indefinitely on lock acquisition after container restarts. Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com>
SyncEngine::new calls eth_chainId which fails fatally on network blips, permanently killing the chain's sync task. Now retries every 10s. Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com>
Populate watermarks (MAX block_num per table) and approximate row counts (from pg_stat_user_tables) into the in-memory atomics during chain initialization. This ensures the status display shows accurate data immediately after a process restart, rather than starting from zero until new writes arrive. Amp-Thread-ID: https://ampcode.com/threads/T-019c930c-df99-724a-a41b-65c98b607256 Co-authored-by: Amp <amp@ampcode.com>
o-az
pushed a commit
that referenced
this pull request
Apr 27, 2026
* feat: show backfill ETA in status display Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com> * fix: terminate all stale connections before migrations The previous filter (ClientRead + 30s) missed active COPY operations from the old container, causing migrations to block indefinitely on lock acquisition after container restarts. Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com> * fix: retry sync engine creation on transient RPC failures SyncEngine::new calls eth_chainId which fails fatally on network blips, permanently killing the chain's sync task. Now retries every 10s. Amp-Thread-ID: https://ampcode.com/threads/T-019c92c9-0c02-7101-9241-b7875567efc6 Co-authored-by: Amp <amp@ampcode.com> * fix: seed in-memory metrics from DB on startup Populate watermarks (MAX block_num per table) and approximate row counts (from pg_stat_user_tables) into the in-memory atomics during chain initialization. This ensures the status display shows accurate data immediately after a process restart, rather than starting from zero until new writes arrive. Amp-Thread-ID: https://ampcode.com/threads/T-019c930c-df99-724a-a41b-65c98b607256 Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
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
After a process restart, the in-memory watermarks and row counts start at zero, causing
/statusto show empty/zero values until new writes arrive. This PR seeds the atomics from the database during chain initialization:MAX(block_num)per table via index-only scans (instant)pg_stat_user_tables(instant, no table scan)This ensures
tidx statusshows accurate data immediately after restart.Changes
src/cli/up.rs: Addseed_metrics_from_db()called duringinitialize_chain()Testing
cargo checkpasses