-
Notifications
You must be signed in to change notification settings - Fork 286
Archive: move indexer read-back to async task #2486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR moves the indexer read-back verification to an asynchronous task to avoid blocking the main indexing flow. The change spawns a tokio task to perform the validation check for the first transaction in a block, allowing the indexing operation to complete without waiting for the verification to finish.
Key Changes:
- Wrapped the transaction verification logic in a
tokio::spawnasync task - Updated error logging format from
{e}to{e:?}for better debug output
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| tokio::spawn({ | ||
| let tx_index_archiver = tx_index_archiver.clone(); | ||
| async move { |
Copilot
AI
Oct 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The spawned task does not handle potential panics or task failures. Consider using a named task handle or adding error logging if the spawned task fails, as errors in detached tasks can be silently lost.
| tokio::spawn({ | ||
| let tx_index_archiver = tx_index_archiver.clone(); | ||
| async move { | ||
| if let Some(tx) = first { |
Copilot
AI
Oct 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The spawned task captures first by move, but first may be used after this point in the parent function. Verify that first is not accessed after line 231, or clone it before spawning if needed.
| tokio::spawn({ | |
| let tx_index_archiver = tx_index_archiver.clone(); | |
| async move { | |
| if let Some(tx) = first { | |
| let first_for_spawn = first.clone(); | |
| tokio::spawn({ | |
| let tx_index_archiver = tx_index_archiver.clone(); | |
| async move { | |
| if let Some(tx) = first_for_spawn { |
This PR moves the indexer read-back verification to an asynchronous task to avoid blocking the main indexing flow. The change spawns a tokio task to perform the validation check for the first transaction in a block, allowing the indexing operation to complete without waiting for the verification to finish.