Skip to content

feat(setup)!: replace scheduling heuristics with explicit dependencies - #214

Merged
onbjerg merged 1 commit into
mainfrom
onbjerg/explicit-setup-dependencies
Sep 17, 2026
Merged

onbjerg merged 1 commit into
mainfrom
onbjerg/explicit-setup-dependencies

Conversation

@onbjerg

@onbjerg onbjerg commented Sep 17, 2026

Copy link
Copy Markdown
Member

Setup currently inserts receipt barriers whenever consecutive transactions change sender or nonce lane, serializing independent accounts. Replace that heuristic with explicit setup.steps[].depends_on receipt 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 send validate 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-cli RPC 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.

Scheduler Repetition 1 Repetition 2 Mean setup time
Heuristic baseline 729.69 s 729.94 s 729.81 s
Explicit dependencies 145.75 s 145.57 s 145.66 s

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's txgen.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 commit 8e4c039b96c3e8feb7a59f171d17504de909679f and benchmark runner 67ab5444bf0fdf4ff2d4b28eab46e72ead38d3a9. Baseline txgen is 466fca39ca26d276c917878b7c34d25523772baa; explicit-dependency txgen is c70b70230f37ca5fee2851224b48170a5ca9d269.

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.

@onbjerg
onbjerg merged commit 41bddc3 into main Sep 17, 2026
10 checks passed
@onbjerg
onbjerg deleted the onbjerg/explicit-setup-dependencies branch September 17, 2026 12:08
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants