feat(setup)!: replace scheduling heuristics with explicit dependencies - #214
Merged
Merged
Conversation
onbjerg
marked this pull request as ready for review
September 17, 2026 12:01
shekhirin
approved these changes
Sep 17, 2026
This was referenced Sep 17, 2026
pull Bot
pushed a commit
to Dustin4444/tempo
that referenced
this pull request
Sep 17, 2026
Declare the four receipt dependencies between the deployer and owner in the shared vault setup used by `vault-deposit` and `vault-withdraw`, so both remain correct when [txgen tempoxyz#214](tempoxyz/txgen#214) removes automatic sender-change barriers. These are the same vault edges exercised in [tempoxyz#7569](tempoxyz#7569), split out against main. Validated generation for both presets with 3 and 1,000 users (23 and 1,020 setup transactions), including emitted dependency IDs and graph validation; only dependency metadata changes.
pull Bot
pushed a commit
to Dustin4444/tempo
that referenced
this pull request
Sep 17, 2026
…empoxyz#7698) Make withdrawal-position seeding wait for `wrapper`, the final deployment on the shared neobank deployer nonce lane, before the user calls the deployed fixture. This replaces reliance on automatic sender-change barriers removed by [txgen tempoxyz#214](tempoxyz/txgen#214), splitting the migration already included in [tempoxyz#7569](tempoxyz#7569) into a standalone change against main. Validated generation of all 12 setup transactions with the emitted `setup.seed_neobank_withdrawals → setup.wrapper` dependency; transaction definitions are otherwise unchanged.
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.
Setup currently inserts receipt barriers whenever consecutive transactions change sender or nonce lane, serializing independent accounts. Replace that heuristic with explicit
setup.steps[].depends_onreceipt dependencies: independent lanes submit concurrently, ordered nonce lanes still pipeline, and every setup transaction must succeed before workload starts.This is a breaking scheduling change. Existing workloads must declare deployment, configuration, funding, and authorization prerequisites explicitly. Dependencies on expanded steps wait for every emitted transaction. Generation and
bench sendvalidate the complete setup graph before output/submission, rejecting missing/duplicate IDs, unknown prerequisites, and cycles including nonce-lane ordering. Setup now also honors--max-pending.Forward receipt dependencies are supported by
generate | bench send. Online scenario initialization remains serial and rejects forward dependencies before submission. Setup is buffered for validation; workload streaming is unchanged.Validation: core/CLI/Tempo suites passed (456 tests, one ignored), plus 12 setup sender tests including fan-in, independent submission, failures, and forward dependencies exceeding the bounded buffer under a pending cap. Workspace Clippy and nightly formatting passed. The unrelated
bench-cliRPC replay integration test fails identically on the base commit with the installed Anvil (four successful responses instead of five).All GitHub CI checks pass. Companion workload migration: tempoxyz/tempo#7569.
The matched multiregion benchmark reduced mean setup time from 729.81 s to 145.66 s: 5.01× faster, an 80.0% reduction, saving 584.15 s (9m 44s) per setup.
All four measurements completed 3,451 setup transactions successfully, with zero setup failures. Both workflows and their infrastructure teardown completed successfully. Timings come from
Setup transactions completed ... elapsed=...in each phase'stxgen.out; they include setup input reading, validation, submission, and receipt waits, and exclude infrastructure provisioning and subsequent workload execution.Inputs: 10 validators across
us-east-1,eu-central-1, 1,000 users, 715 zones,bloat=1(reported as 1,000 MiB), target 50k TPS, 5,000 concurrent requests, a 30 s workload generation limit, and--defer-signing. Both runs use Tempo node commit8e4c039b96c3e8feb7a59f171d17504de909679fand benchmark runner67ab5444bf0fdf4ff2d4b28eab46e72ead38d3a9. Baseline txgen is466fca39ca26d276c917878b7c34d25523772baa; explicit-dependency txgen isc70b70230f37ca5fee2851224b48170a5ca9d269.Artifact verification confirmed identical rendered transaction definitions and workload weights after removing dependency metadata and normalizing the per-run temporary include directory. Each repetition sent 75–76 workload transactions after setup, all successful, so these measurements establish setup-time improvement for this configuration; they do not establish sustained throughput.