Skip to content

chore: replace polling with subscription-based acceptance #4059

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

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

RodrigoVillar
Copy link
Contributor

Why this should be merged

As mentioned in #3996 (comment), we should not be polling API nodes for a transaction's status in the context of load testing. This PR modifies the awaitTx() to use block-subscriptions instead of excessive polling for determining a transaction's status.

How this works

For each block awaitTx() hears about, awaitTx() queries the nonce of the sender at the given height to determine if the sender's nonce has incremented by one (i.e. if the sender's outstanding transaction was included in a block). If the nonce has incremented, awaitTx() then makes a single call to client.TransactionReceipt() to determine if the transaction successfully executed or not.

How this was tested

CI

Need to be documented in RELEASES.md?

N/A

@RodrigoVillar RodrigoVillar marked this pull request as ready for review July 8, 2025 15:50
@Copilot Copilot AI review requested due to automatic review settings July 8, 2025 15:50
@RodrigoVillar RodrigoVillar requested a review from maru-ava as a code owner July 8, 2025 15:50
Copy link
Contributor

@Copilot Copilot AI left a 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 replaces polling-based transaction confirmation with a subscription to new blocks and nonce inspection.

  • Introduces a block subscription in Wallet.SendTx and refactors awaitTx to listen for headers.
  • Removes pingFrequency and related polling logic.
  • Updates tests to drop the PollFrequency field and adjust calls accordingly.

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
tests/load2/wallet.go Adds block‐subscription logic, refactors awaitTx.
tests/load2/tests.go Removes PollFrequency field and argument.
tests/load2/main/main.go Updates instantiation of ZeroTransferTest.
Comments suppressed due to low confidence (1)

tests/load2/wallet.go:119

  • [nitpick] Consider including the transaction hash or more context in this error (e.g., the txHash) to make failures easier to debug.
					return fmt.Errorf("failed tx: %d", receipt.Status)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

2 participants