Skip to content

Commit 3c04868

Browse files
committed
Merge branch 'master' into dl/blockdb
2 parents d63f80d + b1433fd commit 3c04868

File tree

156 files changed

+7900
-5979
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+7900
-5979
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/.github/ @maru-ava
1313
/.github/*.md @maru-ava @meaghanfitzgerald
1414
/.github/CODEOWNERS @StephenButtolph
15+
/.github/workflows/c-chain-reexecution-benchmark.yml @aaronbuchwald
1516
/.gitignore @maru-ava @StephenButtolph
1617
/.golangci.yml @maru-ava @StephenButtolph
1718
/Dockerfile @maru-ava
@@ -22,7 +23,9 @@
2223
/network/p2p/*.md @joshua-kim @meaghanfitzgerald
2324
/scripts/ @maru-ava
2425
/scripts/*.md @maru-ava @meaghanfitzgerald
26+
/scripts/benchmark_cchain_range.sh @aaronbuchwald
2527
/tests/ @maru-ava
2628
/tests/*.md @maru-ava @meaghanfitzgerald
29+
/tests/reexecute/ @aaronbuchwald
2730
/x/merkledb @joshua-kim @rrazvan1
2831
/x/sync @joshua-kim @rrazvan1

.github/actionlint.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ self-hosted-runner:
22
labels:
33
- custom-arm64-jammy
44
- custom-arm64-noble
5+
- avalanche-avalanchego-runner # Github Action Runner Controller

.github/actions/run-monitored-tmpnet-cmd/action.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ inputs:
4040
default: ${{ github.run_attempt }}
4141
job:
4242
default: ${{ github.job }}
43+
grafana_dashboard_id:
44+
description: 'The identifier of the Grafana dashboard to use, in the format <UID>/<dashboard-name>.'
45+
default: 'kBQpRdWnk/avalanche-main-dashboard'
4346

4447
runs:
4548
using: composite
@@ -51,14 +54,14 @@ runs:
5154
- uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f #v31
5255
with:
5356
github_access_token: ${{ inputs.github_token }}
54-
- run: ${{ github.action_path }}/nix-develop.sh --command echo "dependencies installed"
57+
- run: $GITHUB_ACTION_PATH/nix-develop.sh --command echo "dependencies installed"
5558
shell: bash
5659
- name: Notify of metrics availability
5760
if: (inputs.prometheus_username != '')
5861
shell: bash
59-
run: ${{ github.action_path }}/notify-metrics-availability.sh
62+
run: $GITHUB_ACTION_PATH/notify-metrics-availability.sh
6063
env:
61-
GRAFANA_URL: https://grafana-poc.avax-dev.network/d/kBQpRdWnk/avalanche-main-dashboard?orgId=1&refresh=10s&var-filter=is_ephemeral_node%7C%3D%7Cfalse&var-filter=gh_repo%7C%3D%7C${{ inputs.repository_owner }}%2F${{ inputs.repository_name }}&var-filter=gh_run_id%7C%3D%7C${{ inputs.run_id }}&var-filter=gh_run_attempt%7C%3D%7C${{ inputs.run_attempt }}
64+
GRAFANA_URL: https://grafana-poc.avax-dev.network/d/${{ inputs.grafana_dashboard_id }}?orgId=1&refresh=10s&var-filter=is_ephemeral_node%7C%3D%7Cfalse&var-filter=gh_repo%7C%3D%7C${{ inputs.repository_owner }}%2F${{ inputs.repository_name }}&var-filter=gh_run_id%7C%3D%7C${{ inputs.run_id }}&var-filter=gh_run_attempt%7C%3D%7C${{ inputs.run_attempt }}
6265
GH_JOB_ID: ${{ inputs.job }}
6366
FILTER_BY_OWNER: ${{ inputs.filter_by_owner }}
6467
- name: Warn that collection of metrics and logs will not be performed
@@ -68,7 +71,7 @@ runs:
6871
- name: Run command
6972
shell: bash
7073
# --impure ensures the env vars are accessible to the command
71-
run: ${{ inputs.run_env }} ${{ github.action_path }}/nix-develop.sh --impure --command bash -x ${{ inputs.run }}
74+
run: ${{ inputs.run_env }} $GITHUB_ACTION_PATH/nix-develop.sh --impure --command bash -x ${{ inputs.run }}
7275
env:
7376
# Always collect metrics locally even when nodes are running in kube to enable collection from the test workload
7477
TMPNET_START_METRICS_COLLECTOR: ${{ inputs.prometheus_username != '' }}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: C-Chain Re-Execution Benchmark
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
start-block:
7+
description: 'The start block for the benchmark.'
8+
required: false
9+
default: 101
10+
end-block:
11+
description: 'The end block for the benchmark.'
12+
required: false
13+
default: 250000
14+
source-block-dir:
15+
description: 'The source block directory. Supports S3 directory/zip and local directories.'
16+
required: false
17+
default: s3://avalanchego-bootstrap-testing/cchain-mainnet-blocks-1m-ldb.zip
18+
current-state-dir:
19+
description: 'The current state directory. Supports S3 directory/zip and local directories.'
20+
required: false
21+
default: s3://avalanchego-bootstrap-testing/cchain-current-state-hashdb-full-100.zip
22+
schedule:
23+
- cron: '0 9 * * *' # Runs every day at 09:00 UTC (04:00 EST)
24+
25+
jobs:
26+
c-chain-reexecution:
27+
permissions:
28+
id-token: write
29+
contents: write
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: Configure AWS Credentials
33+
uses: aws-actions/configure-aws-credentials@v4
34+
with:
35+
role-to-assume: ${{ secrets.AWS_S3_READ_ONLY_ROLE }}
36+
aws-region: us-east-2
37+
- name: Set task env via GITHUB_ENV
38+
id: set-params
39+
run: |
40+
{
41+
echo "START_BLOCK=${{ github.event.inputs.start-block || 101 }}"
42+
echo "END_BLOCK=${{ github.event.inputs.end-block || 250000 }}"
43+
echo "SOURCE_BLOCK_DIR=${{ github.event.inputs.source-block-dir || 's3://avalanchego-bootstrap-testing/cchain-mainnet-blocks-1m-ldb.zip' }}"
44+
echo "CURRENT_STATE_DIR=${{ github.event.inputs.current-state-dir || 's3://avalanchego-bootstrap-testing/cchain-current-state-hashdb-full-100.zip' }}"
45+
} >> "$GITHUB_ENV"
46+
- uses: actions/checkout@v4
47+
- uses: ./.github/actions/setup-go-for-project
48+
- name: Run C-Chain Re-Execution
49+
uses: ./.github/actions/run-monitored-tmpnet-cmd
50+
with:
51+
run: ./scripts/run_task.sh reexecute-cchain-range-with-copied-data EXECUTION_DATA_DIR=${{ github.workspace }}/reexecution-data BENCHMARK_OUTPUT_FILE=${{ github.workspace }}/reexecute-cchain-range-benchmark-res.txt
52+
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
53+
prometheus_password: ${{ secrets.PROMETHEUS_PASSWORD || '' }}
54+
grafana_dashboard_id: 'Gl1I20mnk/c-chain'
55+
loki_username: ${{ secrets.LOKI_ID || '' }}
56+
loki_password: ${{ secrets.LOKI_PASSWORD || '' }}
57+
runtime: "" # Set runtime input to empty string to disable log collection
58+
- name: Download Previous Benchmark Result
59+
uses: actions/cache@v4
60+
with:
61+
path: ./cache
62+
key: ${{ runner.os }}-reexecute-cchain-range-benchmark.json
63+
- name: Compare Benchmark Results
64+
uses: benchmark-action/github-action-benchmark@v1
65+
with:
66+
tool: 'go'
67+
output-file-path: ${{ github.workspace }}/reexecute-cchain-range-benchmark-res.txt
68+
external-data-json-path: ./cache/${{ runner.os }}-reexecute-cchain-range-benchmark.json
69+
fail-on-alert: true
70+
github-token: ${{ secrets.GITHUB_TOKEN }}
71+
summary-always: true
72+
comment-on-alert: true
73+
auto-push: false
74+
- name: Push Benchmark Result
75+
if: github.event_name == 'schedule'
76+
run: git push origin gh-pages

.github/workflows/ci.yml

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ jobs:
140140
# responsible for pushes.
141141
push: false
142142
# This version should match the version installed in the nix dev shell
143-
version: 1.47.2
143+
version: 1.52.1
144144
links-lint:
145145
name: Markdown Links Lint
146146
runs-on: ubuntu-latest
@@ -233,45 +233,41 @@ jobs:
233233
shell: bash
234234
run: nix develop --command ./scripts/run_task.sh test-bootstrap-monitor-e2e
235235
load:
236-
name: Run load test
236+
name: Run process-based load test
237237
runs-on: ubuntu-latest
238238
steps:
239239
- uses: actions/checkout@v4
240240
- uses: ./.github/actions/setup-go-for-project
241241
- uses: ./.github/actions/run-monitored-tmpnet-cmd
242242
with:
243-
run: ./scripts/run_task.sh test-load
243+
run: ./scripts/run_task.sh test-load -- --load-timeout=30s
244244
artifact_prefix: load
245245
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
246246
prometheus_password: ${{ secrets.PROMETHEUS_PASSWORD || '' }}
247247
loki_username: ${{ secrets.LOKI_ID || '' }}
248248
loki_password: ${{ secrets.LOKI_PASSWORD || '' }}
249-
load_kube:
250-
name: Run load test on kube
249+
load_kube_kind:
250+
name: Run load test on kind cluster
251251
runs-on: ubuntu-latest
252252
steps:
253253
- uses: actions/checkout@v4
254254
- uses: ./.github/actions/setup-go-for-project
255255
- uses: ./.github/actions/run-monitored-tmpnet-cmd
256256
with:
257-
run: ./scripts/run_task.sh test-load-kube
257+
run: ./scripts/run_task.sh test-load-kube-kind -- --load-timeout=30s
258+
runtime: kube
258259
artifact_prefix: load-kube
259260
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
260261
prometheus_password: ${{ secrets.PROMETHEUS_PASSWORD || '' }}
261262
loki_username: ${{ secrets.LOKI_ID || '' }}
262263
loki_password: ${{ secrets.LOKI_PASSWORD || '' }}
263-
load2:
264-
name: Run load2 test
264+
robustness:
265265
runs-on: ubuntu-latest
266266
steps:
267-
- uses: actions/checkout@v4
268-
- uses: ./.github/actions/setup-go-for-project
269-
- uses: ./.github/actions/run-monitored-tmpnet-cmd
270-
with:
271-
run: ./scripts/run_task.sh test-load2 -- --load-timeout=30s
272-
artifact_prefix: load2
273-
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
274-
prometheus_password: ${{ secrets.PROMETHEUS_PASSWORD || '' }}
275-
loki_username: ${{ secrets.LOKI_ID || '' }}
276-
loki_password: ${{ secrets.LOKI_PASSWORD || '' }}
277-
267+
- uses: actions/checkout@v4
268+
- uses: ./.github/actions/setup-go-for-project
269+
- uses: ./.github/actions/install-nix
270+
# TODO(marun) Extend testing of robustness beyond deploying a suitable test environment
271+
- name: Deploy kind with chaos mesh
272+
shell: bash
273+
run: nix develop --command ./scripts/run_task.sh test-robustness
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Load test on self-hosted runners
2+
3+
# This workflow runs load tests against our Kubernetes cluster
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
avalanchego_image:
8+
description: 'AvalancheGo image to test'
9+
required: false
10+
default: 'avaplatform/avalanchego:latest'
11+
type: string
12+
exclusive_scheduling:
13+
description: 'Enable exclusive scheduling'
14+
required: false
15+
default: false
16+
type: boolean
17+
duration:
18+
description: "Load test duration: e.g. 5m, 10m, 1h..."
19+
required: false
20+
21+
jobs:
22+
load_test:
23+
name: Run load test on self-hosted runners
24+
runs-on: avalanche-avalanchego-runner
25+
container:
26+
image: ghcr.io/actions/actions-runner:2.325.0
27+
steps:
28+
- name: Install dependencies
29+
shell: bash
30+
# The xz-utils might be present on some containers
31+
run: |
32+
if ! command -v xz &> /dev/null; then
33+
sudo apt-get update
34+
sudo apt-get install -y xz-utils
35+
fi
36+
- uses: actions/checkout@v4
37+
- uses: ./.github/actions/setup-go-for-project
38+
- name: Run load test
39+
uses: ./.github/actions/run-monitored-tmpnet-cmd
40+
with:
41+
run: >-
42+
./scripts/run_task.sh test-load-kube --
43+
--kube-image ${{ inputs.avalanchego_image }}
44+
${{ inputs.exclusive_scheduling == 'true' && '--kube-use-exclusive-scheduling' || '' }}
45+
${{ inputs.duration && format('--duration {0}', inputs.duration) || '' }}
46+
artifact_prefix: self-hosted-load-test${{ inputs.exclusive_scheduling == 'true' && '-exclusive' || '' }}
47+
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
48+
prometheus_password: ${{ secrets.PROMETHEUS_PASSWORD || '' }}
49+
loki_username: ${{ secrets.LOKI_ID || '' }}
50+
loki_password: ${{ secrets.LOKI_PASSWORD || '' }}

RELEASES.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,74 @@
11
# Release Notes
22

3+
## [v1.13.3](https://github.com/ava-labs/avalanchego/releases/tag/v1.13.3)
4+
5+
This version is backwards compatible to [v1.13.0](https://github.com/ava-labs/avalanchego/releases/tag/v1.13.0). It is optional, but encouraged.
6+
7+
The plugin version is updated to `42` all plugins must update to be compatible.
8+
9+
**This release removes the support for running on Windows. Any users running on Windows should utilize Windows Subsystem for Linux.**
10+
11+
### APIs
12+
13+
- Converted HTTP2 support to route by the `Avalanche-Api-Route` header.
14+
- Added `avalanche_snowman_blks_built_time_skew` metric.
15+
- Added p2p `bloomfilter_hit_rate` metrics for the P-chain, X-chain, C-chain atomic, and C-chain mempools.
16+
17+
### Fixes
18+
19+
- Fixed HTTP2 update request handling.
20+
- Fixed plugin handling of special errors during HTTP request handling.
21+
- Fixed plugin forwarding of HTTP headers.
22+
- Fixed C-chain shared memory UTXO parsing by the Primary Network Wallet.
23+
24+
### What's Changed
25+
26+
- chore: move windows from tier 3 to unsupported by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4031
27+
- [tmpnet] Run kube load test under a service account to validate RBAC by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4030
28+
- Add block timeskew metric by @yacovm in https://github.com/ava-labs/avalanchego/pull/4034
29+
- refactor: use maps.Copy for cleaner map handling by @gopherorg in https://github.com/ava-labs/avalanchego/pull/4042
30+
- Fix bug in rpcchainvm where `io.EOF` is not propagated correctly by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/4035
31+
- chore: fix some minor issues in the comments by @alongdate in https://github.com/ava-labs/avalanchego/pull/4045
32+
- Update golangci-lint to v2 by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/4037
33+
- Simplex VerifiedBlock and BlockDeserializer by @samliok in https://github.com/ava-labs/avalanchego/pull/4009
34+
- Load Framework 2 by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/3996
35+
- Rename test_util -> util_test by @samliok in https://github.com/ava-labs/avalanchego/pull/4054
36+
- Replace toEngine channel with a dedicated subscription API by @yacovm in https://github.com/ava-labs/avalanchego/pull/3999
37+
- Ensure that headers added by the server are propagated by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/4060
38+
- Update coreth to v0.15.3-rc.0 by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4062
39+
- Add default validator set function to snowtest.context by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4065
40+
- Fix flake in TestNotifierReSubscribeAtPrefChange by @yacovm in https://github.com/ava-labs/avalanchego/pull/4067
41+
- Support header-based routing by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/4036
42+
- Simplify json-rpc client handling by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4079
43+
- Update coreth to v0.15.3-rc.1 by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4080
44+
- feat: add default flag options by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4044
45+
- chore: fix some function names in comment by @shangchenglumetro in https://github.com/ava-labs/avalanchego/pull/4053
46+
- chore: fix some inconsistent comments by @jingchanglu in https://github.com/ava-labs/avalanchego/pull/4068
47+
- refactor: use the built-in max/min to simplify the code by @socialsister in https://github.com/ava-labs/avalanchego/pull/4087
48+
- Comm Component for Simplex by @samliok in https://github.com/ava-labs/avalanchego/pull/3998
49+
- ci(load-tests): add GitHub Actions workflow for load testing on k8s by @Elvis339 in https://github.com/ava-labs/avalanchego/pull/4051
50+
- Update run monitored tmpnet cmd to make dashboard param configurable by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4089
51+
- Add WritePrometheusServiceDiscoveryConfigFile helper by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4072
52+
- [nix] Update to 25.05 by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4050
53+
- chore: replace polling with subscription-based acceptance by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4059
54+
- Add Verification + Tracking Logic To Simplex Blocks by @samliok in https://github.com/ava-labs/avalanchego/pull/4052
55+
- Fix wrong pkg import for Primary Wallet by @0xJohnnyGault in https://github.com/ava-labs/avalanchego/pull/4096
56+
- [tmpnet] Source tmpnet defaults from a configmap by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4057
57+
- Throttle platformVM block building until normal ops by @yacovm in https://github.com/ava-labs/avalanchego/pull/4097
58+
- fix: add throttle to error retries by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4098
59+
- Measure bloom filter AppGossip hit rate by @yacovm in https://github.com/ava-labs/avalanchego/pull/4085
60+
61+
### New Contributors
62+
63+
- @gopherorg made their first contribution in https://github.com/ava-labs/avalanchego/pull/4042
64+
- @alongdate made their first contribution in https://github.com/ava-labs/avalanchego/pull/4045
65+
- @JonathanOppenheimer made their first contribution in https://github.com/ava-labs/avalanchego/pull/4065
66+
- @shangchenglumetro made their first contribution in https://github.com/ava-labs/avalanchego/pull/4053
67+
- @jingchanglu made their first contribution in https://github.com/ava-labs/avalanchego/pull/4068
68+
- @0xJohnnyGault made their first contribution in https://github.com/ava-labs/avalanchego/pull/4096
69+
70+
**Full Changelog**: https://github.com/ava-labs/avalanchego/compare/v1.13.2...v1.13.3
71+
372
## [v1.13.2](https://github.com/ava-labs/avalanchego/releases/tag/v1.13.2)
473

574
This version is backwards compatible to [v1.13.0](https://github.com/ava-labs/avalanchego/releases/tag/v1.13.0). It is optional, but encouraged.

0 commit comments

Comments
 (0)