fix: use calculated end_block for native_transfer_block_fetch#368
fix: use calculated end_block for native_transfer_block_fetch#368outerlook wants to merge 2 commits intojoshstevens19:masterfrom
Conversation
Pass the calculated `end_block` from `get_start_end_block()` instead of `network_details.end_block` to `native_transfer_block_fetch()`. When `end_block` is not set in the manifest, `network_details.end_block` is `None`, causing `native_transfer_block_fetch` to loop forever waiting for new blocks. This blocks `try_join_all` in `start_indexing`, preventing historical indexing from completing and live indexing from ever starting. The calculated `end_block` defaults to `latest_block` when not specified, allowing the trace indexer to complete historical sync properly. Fixes joshstevens19#367
|
@outerlook is attempting to deploy a commit to the joshaavecom's projects Team on Vercel. A member of the Team first needs to authorize it. |
When the block fetcher completes historical indexing and drops the sender, `recv_many` returns 0 to signal channel closed. Previously, the block processor would sleep and retry forever instead of exiting. Now it properly detects channel closure (recv == 0 when buffer was empty) and exits, allowing historical indexing to complete.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Can you please confirm by sharing logs or that it was validated in testing that the following conditions hold true with the current changes: When start block is defined:
When start block is not defined:
|
@outerlook did you manage to do this? |
|
Hey Josh! I want to do this next week... There's something at work with a deadline nearby (as everyone I imagine 😆) |
Summary
Pass the calculated
end_blockfromget_start_end_block()instead ofnetwork_details.end_blocktonative_transfer_block_fetch().Problem
When
end_blockis not set in the manifest,network_details.end_blockisNone, causingnative_transfer_block_fetchto loop forever waiting for new blocks. This blockstry_join_allinstart_indexing, preventing:Fix
Use the calculated
end_block(which defaults tolatest_blockwhen not specified in manifest) instead of the raw manifest value. This aligns native transfer behavior with contract events.Fixes #367