Skip to content

feat(bench): upload nightly regression results to ClickHouse#23344

Merged
emmajam merged 2 commits into
mainfrom
ejh/bench-clickhouse-upload
Apr 2, 2026
Merged

feat(bench): upload nightly regression results to ClickHouse#23344
emmajam merged 2 commits into
mainfrom
ejh/bench-clickhouse-upload

Conversation

@emmajam
Copy link
Copy Markdown
Member

@emmajam emmajam commented Apr 2, 2026

Summary

Adds a ClickHouse upload step to bench-scheduled.yml so the PM dashboard can display nightly regression benchmark results.

Background

The benchmarks were migrated from Argo Workflows to GitHub Actions, but the ClickHouse upload step (previously handled by reth-bench-upload-clickhouse.nu in helm-charts) was not ported. This means the nightly regression and big blocks sections on the PM dashboard's nightly-regressions page show no data.

Changes

  • .github/scripts/bench-upload-clickhouse.py — New script that reads summary.json (produced by bench-reth-summary.py), maps fields to the bench_dual_comparisons ClickHouse table schema, and POSTs via the ClickHouse HTTP interface. Zero external dependencies (uses only stdlib urllib).

  • .github/workflows/bench-scheduled.yml — Adds an "Upload to ClickHouse" step after "Parse results". Uses workflow name pattern workflows-nightly-regression-{run_id} which matches the dashboard's LIKE 'workflows-nightly-regression-%' filter.

Required Secrets

The following secrets need to be configured in the repo:

  • CLICKHOUSE_HOST
  • CLICKHOUSE_USER
  • CLICKHOUSE_PASSWORD

(Same credentials used by the PM dashboard — ask in #eng-infra)

Note on Big Blocks

bench-scheduled currently only runs normal blocks (BENCH_BIG_BLOCKS=false). A separate workflow or mode would be needed to populate the big blocks section on the dashboard.

Add a ClickHouse upload step to bench-scheduled.yml so the PM dashboard
can display nightly regression benchmark results. The old Argo workflow
used reth-bench-upload-clickhouse.nu for this; now that benchmarks run
on GitHub Actions, results need to be pushed from GHA.

The upload script reads summary.json (produced by bench-reth-summary.py),
maps its fields to the bench_dual_comparisons table schema, and POSTs
via the ClickHouse HTTP interface.

Workflow name follows the pattern 'workflows-nightly-regression-{run_id}'
which matches the dashboard's LIKE filter.

Requires CLICKHOUSE_HOST, CLICKHOUSE_USER, and CLICKHOUSE_PASSWORD
secrets to be configured in the repository.

Amp-Thread-ID: https://ampcode.com/threads/T-019d4df0-bb22-754f-9e85-10f3230d3ab7
Co-authored-by: Amp <amp@ampcode.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 2, 2026

⚠️ Changelog not found.

A changelog entry is required before merging. We've generated a suggested changelog based on your changes:

Preview
---
reth-bench: minor
---

Added a script and CI workflow step to upload nightly benchmark regression results to ClickHouse, passing credentials via headers instead of URL query params.

Add changelog to commit this to your branch.

@emmajam emmajam marked this pull request as ready for review April 2, 2026 11:56
@github-project-automation github-project-automation Bot moved this from Backlog to In Progress in Reth Tracker Apr 2, 2026
@emmajam emmajam added this pull request to the merge queue Apr 2, 2026
Merged via the queue into main with commit c82d435 Apr 2, 2026
37 checks passed
@emmajam emmajam deleted the ejh/bench-clickhouse-upload branch April 2, 2026 12:39
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Reth Tracker Apr 2, 2026
github-merge-queue Bot pushed a commit to tempoxyz/tempo that referenced this pull request Apr 3, 2026
Automated nightly update of reth dependencies from `paradigmxyz/reth`
main branch.

## Upstream reth changes


[`f8efc76...c82d435`](paradigmxyz/reth@f8efc76...c82d435)

🔗 Amp thread:
https://ampcode.com/threads/T-019d517e-981b-75fd-b3cf-8ad2455f38f6
**RPC**
- Remove `0x` prefix from `admin_peers` id and return keccak256 node ID
in `admin_nodeInfo.id` to match go-ethereum format
([#23318](paradigmxyz/reth#23318),
[#23319](paradigmxyz/reth#23319))
- Apply count filter only after `after` is consumed in pagination
([#23338](paradigmxyz/reth#23338))
- Pre-allocate vectors in `eth_feeHistory`
([#23334](paradigmxyz/reth#23334))
- Add `bal` RPC methods
([#23330](paradigmxyz/reth#23330))

**Engine**
- Include backpressure in reported `persistence_wait`, make wait-time
mimic CL slot time
([#23308](paradigmxyz/reth#23308))

**Perf**
- Reduce cacheline ping-pong in workers availability
([#23321](paradigmxyz/reth#23321))

**Net**
- Avoid itertools `Format` panic in tracing log
([#23331](paradigmxyz/reth#23331))

**DB**
- Cap `storage_v2` unwind history by MDBX tip
([#23335](paradigmxyz/reth#23335))

**Bench**
- Add warmup step for big blocks mode
([#23323](paradigmxyz/reth#23323))
- Make payload handling ethereum-only
([#23324](paradigmxyz/reth#23324))
- Use repository instead of GitHub Actions cache to track hourly runs
([#23306](paradigmxyz/reth#23306))
- Upload nightly regression results to ClickHouse
([#23344](paradigmxyz/reth#23344))

**Chore**
- Migrate `allow(clippy::` to `expect(clippy::`
([#23340](paradigmxyz/reth#23340))
- Remove unused return value from `dispatch_with_chunking`
([#23341](paradigmxyz/reth#23341))
- Update nixpkgs to 25.11 and refresh flake inputs
([#23342](paradigmxyz/reth#23342))

## Migrations

🔗 Amp thread:
https://ampcode.com/threads/T-019d517e-baf0-727b-a57e-0488240af973
- **Reth dependency bump**: All `reth-*` git dependencies updated from
rev `f8efc76` to `c82d435`
- **New `GetBlockAccessList` trait impl**: `TempoEthApi` now implements
`GetBlockAccessList` (imported from `reth_rpc_eth_api::helpers::bal`),
likely a new required trait added upstream in the reth update

[GitHub
Workflow](https://github.com/tempoxyz/tempo/actions/runs/23933027282)

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants