feat(solana-indexer) PR 14: binary wiring - #4744
Conversation
|
@claude please review |
|
Claude finished @squadgazzz's task in 4m 58s —— View job PR Review: binary wiringReviewed the full diff against One issue worth addressing, posted inline:
Nothing else blocking — the remaining behavior (live-tip gaps until backfill BE-204, no graceful decoder drain on shutdown) is already acknowledged in the PR description and acceptable for the MVP. |
|
Claude finished @squadgazzz's task in 3m 7s —— View job PR Review: binary wiring
Re-reviewed the full diff. Since my last review, the decoder-exit concern I raised has been fixed (commit
Everything else holds up:
No blocking issues. The acknowledged gaps (live-tip gap until BE-204 backfill, no reader for |
Description
The binary comes alive: a TOML configuration (same shape as the solana-driver's, reusing
configs::shared), the database pool, the RPC client, the ingester-to-decoder channel, and a shutdown signal, all assembled inrun::start. The CLI takes--configplus a--start-slotoverride for the first subscription (bounded by the provider's replay window). The process runs until the stream loop or the decoder stops or a signal arrives.The stream loop owns the restart policy. A dropped stream reconnects and resumes one past the last indexed slot. When that resume is rejected, which usually means the slot fell out of the provider's replay window (~150 slots), the loop logs an error and resubscribes from the live tip instead of crash-looping. The gap stays unindexed until the MVP backfill (BE-204).
SolFlow has no program yet, so its subscription filter only exists when
--solflow-programis set, and the decoder sees the settlement program in its place, which makes the SolFlow branch unreachable.Consuming the modules also fired the planted dead-code expectations (
Decoder,Postgres::new,Rpc::new), so those attributes are gone.Two named gaps, both out of scope here: the
latest_chain_slotcounter has no reader andsolana.chain_tiphas no writer yet (that pairing lands with the autopilot's deadline work), and there is no liveness endpoint until the metrics PR (BE-73).Changes
config: TOML file loading with anexample.tomlkept parseable by a testrun::start: config, observability init, pool, RPC client, channel, spawned decoder, stream loop, shutdown viatokio::select!Ingester::servetakes aResume(watermark or live tip) and an optional SolFlow programSend-assertion helper, the real spawn replaces itHow to test
Existing tests. The real test is running the binary against on-chain data, which is the next step after this stack lands.
Related issues
Resolves BE-75.