diff --git a/.github/workflows/qa-rpc-integration-tests-latest.yml b/.github/workflows/qa-rpc-integration-tests-latest.yml index da22e7a2867..3b758c43b19 100644 --- a/.github/workflows/qa-rpc-integration-tests-latest.yml +++ b/.github/workflows/qa-rpc-integration-tests-latest.yml @@ -23,7 +23,7 @@ on: jobs: mainnet-rpc-integ-tests-latest: - name: mainnet-rpc-integ-tests-latest (${{ matrix.exec_mode }}) + name: mainnet-rpc-integ-tests-latest (${{ matrix.commitment_mode }}) concurrency: group: >- ${{ @@ -42,7 +42,7 @@ jobs: # just one after the other (~2× wall-clock). max-parallel: 1 matrix: - exec_mode: + commitment_mode: - serial - parallel env: @@ -53,10 +53,10 @@ jobs: ERIGON_ASSERT: true RPC_PAST_TEST_DIR: /opt/rpc-past-tests CHAIN: mainnet - # Toggle dbg.Exec3Parallel from CI without code changes. envLookup - # in common/dbg/dbg_env.go auto-prepends ERIGON_, so this maps to - # the EXEC3_PARALLEL flag declared in common/dbg/experiments.go. - ERIGON_EXEC3_PARALLEL: ${{ matrix.exec_mode == 'parallel' && 'true' || 'false' }} + # Toggle statecfg.ExperimentalParallelCommitment from CI without code + # changes. envLookup in common/dbg/dbg_env.go auto-prepends ERIGON_, so + # this maps to the COMMITMENT_PARALLEL flag read in db/state/statecfg. + ERIGON_COMMITMENT_PARALLEL: ${{ matrix.commitment_mode == 'parallel' && 'true' || 'false' }} steps: - name: Check out repository @@ -123,7 +123,7 @@ jobs: if: failure() && steps.preparing_step.outcome == 'failure' uses: actions/upload-artifact@v7 with: - name: preparing-step-logs-${{ matrix.exec_mode }} + name: preparing-step-logs-${{ matrix.commitment_mode }} path: ${{ env.ERIGON_REFERENCE_DATA_DIR }}/logs/ - name: Pause the Erigon instance dedicated to db maintenance @@ -180,7 +180,7 @@ jobs: if: failure() && steps.pre_test_step.outcome == 'failure' uses: actions/upload-artifact@v7 with: - name: pre-test-logs-${{ matrix.exec_mode }} + name: pre-test-logs-${{ matrix.commitment_mode }} path: ${{ env.ERIGON_TESTBED_DATA_DIR }}/logs/ - name: Run RPC Integration Tests @@ -260,7 +260,7 @@ jobs: if: always() && steps.test_step.outputs.test_executed == 'true' uses: actions/upload-artifact@v7 with: - name: test-results-${{ matrix.exec_mode }} + name: test-results-${{ matrix.commitment_mode }} path: | ${{ env.TEST_RESULT_DIR }} ${{ env.ERIGON_TESTBED_DATA_DIR }}/logs/ @@ -280,7 +280,7 @@ jobs: --repo erigon \ --commit $(git rev-parse HEAD) \ --branch ${{ github.ref_name }} \ - --test_name rpc-integration-tests-latest${{ matrix.exec_mode == 'parallel' && '-parallel' || '' }} \ + --test_name rpc-integration-tests-latest${{ matrix.commitment_mode == 'parallel' && '-parallel' || '' }} \ --chain $CHAIN \ --runner ${{ runner.name }} \ --db_version $db_version \ diff --git a/.github/workflows/qa-rpc-performance-comparison-tests.yml b/.github/workflows/qa-rpc-performance-comparison-tests.yml index 6127920cde0..e07970cd891 100644 --- a/.github/workflows/qa-rpc-performance-comparison-tests.yml +++ b/.github/workflows/qa-rpc-performance-comparison-tests.yml @@ -8,8 +8,8 @@ on: type: boolean required: false default: false - exec_mode: - description: 'Erigon execution mode ("default" leaves ERIGON_EXEC3_PARALLEL unset)' + commitment_mode: + description: 'Erigon commitment mode ("default" leaves ERIGON_COMMITMENT_PARALLEL unset)' type: choice required: false default: default @@ -194,22 +194,22 @@ jobs: id: erigon_running_step working-directory: ${{ github.workspace }}/build/bin env: - EXEC_MODE: ${{ github.event.inputs.exec_mode }} + EXEC_MODE: ${{ github.event.inputs.commitment_mode }} run: | set +e # Disable exit on error echo "Starting Erigon..." - # Only set ERIGON_EXEC3_PARALLEL on an explicit choice; otherwise ensure it's + # Only set ERIGON_COMMITMENT_PARALLEL on an explicit choice; otherwise ensure it's # unset so erigon uses its built-in default (and doesn't inherit runner env). if [ "$EXEC_MODE" = "parallel" ]; then - export ERIGON_EXEC3_PARALLEL=true - echo "Set ERIGON_EXEC3_PARALLEL=true (parallel mode)" + export ERIGON_COMMITMENT_PARALLEL=true + echo "Set ERIGON_COMMITMENT_PARALLEL=true (parallel mode)" elif [ "$EXEC_MODE" = "serial" ]; then - export ERIGON_EXEC3_PARALLEL=false - echo "Set ERIGON_EXEC3_PARALLEL=false (serial mode)" + export ERIGON_COMMITMENT_PARALLEL=false + echo "Set ERIGON_COMMITMENT_PARALLEL=false (serial mode)" else - unset ERIGON_EXEC3_PARALLEL - echo "Leaving ERIGON_EXEC3_PARALLEL unset (default behavior)" + unset ERIGON_COMMITMENT_PARALLEL + echo "Leaving ERIGON_COMMITMENT_PARALLEL unset (default behavior)" fi ./erigon --prune.mode=minimal --datadir $ERIGON_TESTBED_DATA_DIR --http.api admin,debug,eth,parity,erigon,trace,web3,txpool,ots,net --ws > erigon.log 2>&1 & @@ -378,7 +378,7 @@ jobs: --repo $client \ --branch $branch_name \ --commit $commit_hash \ - --test_name rpc-performance-test-latest${{ (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'serial' && '-serial') || '' }}-$method \ + --test_name rpc-performance-test-latest${{ (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }}-$method \ --chain $CHAIN \ --runner ${{ runner.name }} \ --db_version $db_version \ @@ -451,7 +451,7 @@ jobs: if: (matrix.client == 'erigon' || needs.setup.outputs.run_geth == 'true') && steps.test_step.outputs.test_executed == 'true' uses: actions/upload-artifact@v7 with: - name: test-results-${{ env.CHAIN }}-${{ matrix.client }}${{ (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'serial' && '-serial') || '' }} + name: test-results-${{ env.CHAIN }}-${{ matrix.client }}${{ (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }} path: ${{ env.past_test_dir }} - name: Stop Erigon @@ -471,7 +471,7 @@ jobs: if: matrix.client == 'erigon' && steps.test_step.outputs.test_executed == 'true' uses: actions/upload-artifact@v7 with: - name: erigon-logs-${{ env.CHAIN }}${{ (github.event.inputs.exec_mode == 'parallel' && '-parallel') || (github.event.inputs.exec_mode == 'serial' && '-serial') || '' }} + name: erigon-logs-${{ env.CHAIN }}${{ (github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }} path: ${{ github.workspace }}/build/bin/erigon.log - name: Delete Erigon Testbed Data Directory diff --git a/.github/workflows/qa-rpc-performance-tests.yml b/.github/workflows/qa-rpc-performance-tests.yml index e08e7ab9d09..1303d34bfa2 100644 --- a/.github/workflows/qa-rpc-performance-tests.yml +++ b/.github/workflows/qa-rpc-performance-tests.yml @@ -11,8 +11,8 @@ on: type: boolean required: false default: false - exec_mode: - description: 'Erigon execution mode ("default" leaves ERIGON_EXEC3_PARALLEL unset)' + commitment_mode: + description: 'Erigon commitment mode ("default" leaves ERIGON_COMMITMENT_PARALLEL unset)' type: choice required: false default: default @@ -208,21 +208,21 @@ jobs: if: matrix.client == 'erigon' working-directory: ${{ github.workspace }}/build/bin env: - EXEC_MODE: ${{ github.event.inputs.exec_mode }} + EXEC_MODE: ${{ github.event.inputs.commitment_mode }} run: | echo "Starting RpcDaemon..." - # Only set ERIGON_EXEC3_PARALLEL on an explicit choice; otherwise ensure it's + # Only set ERIGON_COMMITMENT_PARALLEL on an explicit choice; otherwise ensure it's # unset so erigon uses its built-in default (and doesn't inherit runner env). if [ "$EXEC_MODE" = "parallel" ]; then - export ERIGON_EXEC3_PARALLEL=true - echo "Set ERIGON_EXEC3_PARALLEL=true (parallel mode)" + export ERIGON_COMMITMENT_PARALLEL=true + echo "Set ERIGON_COMMITMENT_PARALLEL=true (parallel mode)" elif [ "$EXEC_MODE" = "serial" ]; then - export ERIGON_EXEC3_PARALLEL=false - echo "Set ERIGON_EXEC3_PARALLEL=false (serial mode)" + export ERIGON_COMMITMENT_PARALLEL=false + echo "Set ERIGON_COMMITMENT_PARALLEL=false (serial mode)" else - unset ERIGON_EXEC3_PARALLEL - echo "Leaving ERIGON_EXEC3_PARALLEL unset (default behavior)" + unset ERIGON_COMMITMENT_PARALLEL + echo "Leaving ERIGON_COMMITMENT_PARALLEL unset (default behavior)" fi ./rpcdaemon --datadir $ERIGON_REFERENCE_DATA_DIR --http.api admin,debug,eth,parity,erigon,trace,web3,txpool,ots,net > erigon.log 2>&1 & @@ -371,7 +371,7 @@ jobs: --repo $client \ --branch $branch_name \ --commit $commit_hash \ - --test_name rpc-performance-test-$client${{ (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'serial' && '-serial') || '' }}-$method \ + --test_name rpc-performance-test-$client${{ (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }}-$method \ --chain $CHAIN \ --runner ${{ runner.name }} \ --db_version $db_version \ @@ -434,7 +434,7 @@ jobs: if: always() && matrix.client == 'erigon' && steps.rpcdaemon_running_step.outputs.rpc_daemon_started == 'true' uses: actions/upload-artifact@v7 with: - name: rpcdaemon-logs${{ (github.event.inputs.exec_mode == 'parallel' && '-parallel') || (github.event.inputs.exec_mode == 'serial' && '-serial') || '' }} + name: rpcdaemon-logs${{ (github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }} path: ${{ github.workspace }}/build/bin/erigon.log - name: Restore Erigon Chaindata Directory @@ -470,7 +470,7 @@ jobs: if: (matrix.client == 'erigon' || needs.setup.outputs.run_geth == 'true') && steps.test_step.outputs.test_executed == 'true' uses: actions/upload-artifact@v7 with: - name: test-results-${{ env.CHAIN }}-${{ matrix.client }}${{ (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.exec_mode == 'serial' && '-serial') || '' }} + name: test-results-${{ env.CHAIN }}-${{ matrix.client }}${{ (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'parallel' && '-parallel') || (matrix.client == 'erigon' && github.event.inputs.commitment_mode == 'serial' && '-serial') || '' }} path: ${{ env.past_test_dir }} - name: Action to check failure condition diff --git a/.github/workflows/qa-stage-exec.yml b/.github/workflows/qa-stage-exec.yml index 96f931f01e8..76448237d32 100644 --- a/.github/workflows/qa-stage-exec.yml +++ b/.github/workflows/qa-stage-exec.yml @@ -17,48 +17,48 @@ concurrency: jobs: stage-exec-test: - name: stage-exec-test (${{ matrix.mode_name }}, ${{ matrix.exec_mode }}) + name: stage-exec-test (${{ matrix.mode_name }}, ${{ matrix.commitment_mode }}) runs-on: [self-hosted, qa, Ethereum, tip-tracking] strategy: fail-fast: false matrix: - # Each (mode_name, exec_mode) pair runs separately. The testbed + # Each (mode_name, commitment_mode) pair runs separately. The testbed # data dir already disambiguates by mode_name; we extend it with - # exec_mode so serial+parallel entries don't clobber each other. + # commitment_mode so serial+parallel entries don't clobber each other. include: - mode_name: resume-nonchaintip extra_flags: "" test_name: stage_exec_resume_nonchaintip - exec_mode: serial + commitment_mode: serial - mode_name: resume-nonchaintip extra_flags: "" test_name: stage_exec_resume_nonchaintip - exec_mode: parallel + commitment_mode: parallel - mode_name: from-0 extra_flags: "--rm-state-all" test_name: stage_exec_from_0 - exec_mode: serial + commitment_mode: serial - mode_name: from-0 extra_flags: "--rm-state-all" test_name: stage_exec_from_0 - exec_mode: parallel + commitment_mode: parallel - mode_name: chaintip extra_flags: "--chaintip" test_name: stage_exec_resume_chaintip - exec_mode: serial + commitment_mode: serial - mode_name: chaintip extra_flags: "--chaintip" test_name: stage_exec_resume_chaintip - exec_mode: parallel + commitment_mode: parallel env: - ERIGON_TESTBED_DATA_DIR: /opt/erigon-testbed/datadir-${{ matrix.mode_name }}-${{ matrix.exec_mode }} + ERIGON_TESTBED_DATA_DIR: /opt/erigon-testbed/datadir-${{ matrix.mode_name }}-${{ matrix.commitment_mode }} ERIGON_QA_PATH: /home/qarunner/erigon-qa TIMEOUT_SECONDS: 360 CHAIN: mainnet - # Toggle dbg.Exec3Parallel from CI without code changes. envLookup - # in common/dbg/dbg_env.go auto-prepends ERIGON_, so this maps to - # the EXEC3_PARALLEL flag declared in common/dbg/experiments.go. - ERIGON_EXEC3_PARALLEL: ${{ matrix.exec_mode == 'parallel' && 'true' || 'false' }} + # Toggle statecfg.ExperimentalParallelCommitment from CI without code + # changes. envLookup in common/dbg/dbg_env.go auto-prepends ERIGON_, so + # this maps to the COMMITMENT_PARALLEL flag read in db/state/statecfg. + ERIGON_COMMITMENT_PARALLEL: ${{ matrix.commitment_mode == 'parallel' && 'true' || 'false' }} steps: - name: Check out repository @@ -114,7 +114,7 @@ jobs: python3 $ERIGON_QA_PATH/test_system/qa-tests/stage-exec/run_and_check_stage_exec.py \ ${{ github.workspace }}/build/bin $ERIGON_TESTBED_DATA_DIR $TIMEOUT_SECONDS $CHAIN \ - --result-file ${{ github.workspace }}/result-$CHAIN-${{ matrix.mode_name }}-${{ matrix.exec_mode }}.json \ + --result-file ${{ github.workspace }}/result-$CHAIN-${{ matrix.mode_name }}-${{ matrix.commitment_mode }}.json \ ${{ matrix.extra_flags }} test_exit_status=$? @@ -148,20 +148,20 @@ jobs: --runner ${{ runner.name }} \ --db_version $db_version \ --outcome $TEST_RESULT \ - --result_file ${{ github.workspace }}/result-$CHAIN-${{ matrix.mode_name }}-${{ matrix.exec_mode }}.json + --result_file ${{ github.workspace }}/result-$CHAIN-${{ matrix.mode_name }}-${{ matrix.commitment_mode }}.json - name: Upload test results if: ${{ always() && steps.test_step.outputs.test_executed == 'true' }} uses: actions/upload-artifact@v7 with: - name: test-results-${{ matrix.mode_name }}-${{ matrix.exec_mode }} - path: ${{ github.workspace }}/result-${{ env.CHAIN }}-${{ matrix.mode_name }}-${{ matrix.exec_mode }}.json + name: test-results-${{ matrix.mode_name }}-${{ matrix.commitment_mode }} + path: ${{ github.workspace }}/result-${{ env.CHAIN }}-${{ matrix.mode_name }}-${{ matrix.commitment_mode }}.json - name: Upload erigon logs if: ${{ always() && steps.test_step.outputs.test_executed == 'true' }} uses: actions/upload-artifact@v7 with: - name: erigon-logs-${{ matrix.mode_name }}-${{ matrix.exec_mode }} + name: erigon-logs-${{ matrix.mode_name }}-${{ matrix.commitment_mode }} path: ${{ env.ERIGON_TESTBED_DATA_DIR }}/logs/ - name: Delete Erigon Testbed Data Directory diff --git a/.github/workflows/qa-txpool-performance-test.yml b/.github/workflows/qa-txpool-performance-test.yml index 57dc5ecce98..fab477c46ab 100644 --- a/.github/workflows/qa-txpool-performance-test.yml +++ b/.github/workflows/qa-txpool-performance-test.yml @@ -18,23 +18,23 @@ on: jobs: tx_pool_assertoor_test: - name: tx_pool_assertoor_test (${{ matrix.exec_mode }}) + name: tx_pool_assertoor_test (${{ matrix.commitment_mode }}) runs-on: [self-hosted, qa, X64, long-running] strategy: fail-fast: false # Self-hosted long-running pool is small; matrix entries serialize. max-parallel: 1 matrix: - exec_mode: + commitment_mode: - serial - parallel env: ERIGON_QA_PATH: /home/qarunner/erigon-qa - ENCLAVE_NAME: "kurtosis-run-${{ github.run_id }}-${{ matrix.exec_mode }}" - # Toggle dbg.Exec3Parallel from CI without code changes. envLookup - # in common/dbg/dbg_env.go auto-prepends ERIGON_, so this maps to - # the EXEC3_PARALLEL flag declared in common/dbg/experiments.go. - ERIGON_EXEC3_PARALLEL: ${{ matrix.exec_mode == 'parallel' && 'true' || 'false' }} + ENCLAVE_NAME: "kurtosis-run-${{ github.run_id }}-${{ matrix.commitment_mode }}" + # Toggle statecfg.ExperimentalParallelCommitment from CI without code + # changes. envLookup in common/dbg/dbg_env.go auto-prepends ERIGON_, so + # this maps to the COMMITMENT_PARALLEL flag read in db/state/statecfg. + ERIGON_COMMITMENT_PARALLEL: ${{ matrix.commitment_mode == 'parallel' && 'true' || 'false' }} steps: - name: Fast checkout git repository @@ -50,14 +50,14 @@ jobs: run: | docker build -t test/erigon:current-base . - - name: Bake exec_mode env into the runtime image - # Add ERIGON_EXEC3_PARALLEL as an ENV layer on top of the base image - # so the matrix entries differ in exec mode. ENV layers are cheap and - # don't invalidate earlier layer caches. + - name: Bake commitment_mode env into the runtime image + # Add ERIGON_COMMITMENT_PARALLEL as an ENV layer on top of the base + # image so the matrix entries differ in commitment mode. ENV layers are + # cheap and don't invalidate earlier layer caches. run: | docker build -t test/erigon:current - <> clients/erigon/Dockerfile + echo "ENV ERIGON_COMMITMENT_PARALLEL=${ERIGON_COMMITMENT_PARALLEL}" >> clients/erigon/Dockerfile erigon_extra_flags="${{ matrix.erigon-extra-flags }}" if [ -n "$erigon_extra_flags" ]; then echo "Patching erigon.sh with extra flags: $erigon_extra_flags" @@ -324,9 +325,9 @@ jobs: if: always() uses: actions/upload-artifact@v7 with: - # exec_mode in the artifact name keeps the two matrix entries from + # commitment_mode in the artifact name keeps the two matrix entries from # clobbering each other's logs on the same artifact key. - name: hive-workspace-log-${{ matrix.shard }}-${{ matrix.exec_mode }} + name: hive-workspace-log-${{ matrix.shard }}-${{ matrix.commitment_mode }} path: hive/workspace/logs if-no-files-found: ignore - name: Test Results diff --git a/.github/workflows/test-hive.yml b/.github/workflows/test-hive.yml index e79e0e7a458..d591a295b93 100644 --- a/.github/workflows/test-hive.yml +++ b/.github/workflows/test-hive.yml @@ -12,7 +12,7 @@ concurrency: jobs: test-hive: - name: test-hive (${{ matrix.sim }}, ${{ matrix.sim-limit }}, ${{ matrix.exec_mode }}) + name: test-hive (${{ matrix.sim }}, ${{ matrix.sim-limit }}, ${{ matrix.commitment_mode }}) if: >- ${{ !github.event.pull_request.number || (!github.event.pull_request.draft @@ -26,10 +26,11 @@ jobs: # picture across every shard. fail-fast: ${{ github.event_name == 'merge_group' }} matrix: - # Each (sim, sim-limit) pair is run twice — once with serial exec - # (ERIGON_EXEC3_PARALLEL=false) and once with parallel — so engine-API - # / wire-protocol divergence between the two paths is caught on the - # PR. Matrix entries spawn separate `hive` group runners and run + # Each (sim, sim-limit) pair is run twice — once with serial commitment + # (ERIGON_COMMITMENT_PARALLEL=false) and once with parallel — so + # engine-API / wire-protocol divergence between the two paths is caught + # on the PR. Execution is parallel in both legs (default). Matrix + # entries spawn separate `hive` group runners and run # concurrently — wall-clock unchanged, runner-minutes doubled. # `sim` is the simulator path passed to `hive --sim`. Most simulators # live under simulators/ethereum/, but a few (e.g. devp2p) are top-level. @@ -37,53 +38,53 @@ jobs: - sim: ethereum/engine sim-limit: exchange-capabilities|auth max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial - sim: ethereum/engine sim-limit: exchange-capabilities|auth max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel - sim: ethereum/engine sim-limit: withdrawals max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial - sim: ethereum/engine sim-limit: withdrawals max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel - sim: ethereum/engine sim-limit: cancun max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial - sim: ethereum/engine sim-limit: cancun max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel - sim: ethereum/engine sim-limit: api max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial - sim: ethereum/engine sim-limit: api max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel - sim: ethereum/rpc-compat sim-limit: ".*" max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial - sim: ethereum/rpc-compat sim-limit: ".*" max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel - sim: devp2p sim-limit: eth max-allowed-failures: 0 - exec_mode: serial + commitment_mode: serial # discv5 exercises peer discovery, not the EL exec path, so it runs in - # just one exec mode — duplicating it in the serial leg adds no signal. + # just one commitment mode — duplicating it in the serial leg adds no signal. - sim: devp2p sim-limit: eth|discv5 max-allowed-failures: 0 - exec_mode: parallel + commitment_mode: parallel steps: - name: Checkout Erigon uses: actions/checkout@v7 @@ -149,10 +150,10 @@ jobs: - name: Get dependencies and build hive env: EXECUTION_APIS_REF: ${{ steps.hive-version.outputs.execution_apis_ref }} - # Toggle dbg.Exec3Parallel inside the hive erigon container. - # We bake this as an ENV directive into the client Dockerfile so - # every erigon instance hive launches inherits it. - ERIGON_EXEC3_PARALLEL: ${{ matrix.exec_mode == 'parallel' && 'true' || 'false' }} + # Toggle statecfg.ExperimentalParallelCommitment inside the hive + # erigon container. We bake this as an ENV directive into the client + # Dockerfile so every erigon instance hive launches inherits it. + ERIGON_COMMITMENT_PARALLEL: ${{ matrix.commitment_mode == 'parallel' && 'true' || 'false' }} run: | cd hive retry() { @@ -175,10 +176,10 @@ jobs: echo "ERROR: failed to repoint hive's erigon client Dockerfile at hive/erigon:cilocal" exit 1 fi - # Inject ERIGON_EXEC3_PARALLEL into the runtime image so the + # Inject ERIGON_COMMITMENT_PARALLEL into the runtime image so the # erigon process inside hive picks it up. Append as the last layer # so it doesn't invalidate earlier build caches. - echo "ENV ERIGON_EXEC3_PARALLEL=${ERIGON_EXEC3_PARALLEL}" >> clients/erigon/Dockerfile + echo "ENV ERIGON_COMMITMENT_PARALLEL=${ERIGON_COMMITMENT_PARALLEL}" >> clients/erigon/Dockerfile # Pin the execution-apis ref used by the rpc-compat simulator so that # upstream test additions don't break CI unexpectedly. # SECURITY: value comes from hive-versions.json which fork PRs can modify; @@ -254,13 +255,13 @@ jobs: - name: Compute artifact name id: artifact-name env: - RAW_NAME: hive-workspace-log-${{ matrix.sim }}-${{ matrix.sim-limit }}-${{ matrix.exec_mode }} + RAW_NAME: hive-workspace-log-${{ matrix.sim }}-${{ matrix.sim-limit }}-${{ matrix.commitment_mode }} run: echo "name=${RAW_NAME//[^A-Za-z0-9._-]/_}" >> "$GITHUB_OUTPUT" - name: Upload output log uses: actions/upload-artifact@v7 with: - # exec_mode in the artifact name keeps the two matrix entries from + # commitment_mode in the artifact name keeps the two matrix entries from # clobbering each other's logs on the same artifact key. name: ${{ steps.artifact-name.outputs.name }} path: hive/workspace/logs diff --git a/.github/workflows/test-kurtosis-assertoor.yml b/.github/workflows/test-kurtosis-assertoor.yml index 37bf448da6a..af645d30295 100644 --- a/.github/workflows/test-kurtosis-assertoor.yml +++ b/.github/workflows/test-kurtosis-assertoor.yml @@ -304,7 +304,7 @@ jobs: key: docker-buildkit-${{ env.BUILDKIT_IMAGE }} assertoor_test: - name: assertoor_${{ matrix.suite }}_${{ matrix.exec_mode }}_test + name: assertoor_${{ matrix.suite }}_${{ matrix.commitment_mode }}_test needs: build-erigon-image # On cache-warming runs build-erigon-image alone warms the kurtosis image # cache; there's nothing for the matrix to do (the test step is skipped). @@ -324,32 +324,33 @@ jobs: # pass but pathological hangs (e.g. a node that silently stops proposing) # fail in reasonable time instead of burning hours. # - # Each suite runs twice — once with serial exec - # (ERIGON_EXEC3_PARALLEL=false) and once with parallel — so divergence - # is caught on the PR. Matrix entries spawn separate hosted runners - # and run concurrently — wall-clock unchanged, runner-minutes doubled. + # Each suite runs twice — once with serial commitment + # (ERIGON_COMMITMENT_PARALLEL=false) and once with parallel — so + # divergence is caught on the PR. Execution is parallel in both legs + # (default). Matrix entries spawn separate hosted runners and run + # concurrently — wall-clock unchanged, runner-minutes doubled. # All entries share the single erigon image built by build-erigon-image. include: - suite: regular package_args: .github/workflows/kurtosis/regular-assertoor.io ethereum_package_branch: "5.0.1" test_timeout_minutes: 50 - exec_mode: serial + commitment_mode: serial - suite: regular package_args: .github/workflows/kurtosis/regular-assertoor.io ethereum_package_branch: "5.0.1" test_timeout_minutes: 50 - exec_mode: parallel + commitment_mode: parallel - suite: pectra package_args: .github/workflows/kurtosis/pectra.io ethereum_package_branch: "5.0.1" test_timeout_minutes: 45 - exec_mode: serial + commitment_mode: serial - suite: pectra package_args: .github/workflows/kurtosis/pectra.io ethereum_package_branch: "5.0.1" test_timeout_minutes: 45 - exec_mode: parallel + commitment_mode: parallel - suite: glamsterdam package_args: .github/workflows/kurtosis/glamsterdam.io # Pinned to 6.1.0 rather than main: commit 835dd9b on main introduced GpuConfig, @@ -357,19 +358,19 @@ jobs: # Unpin to main once CI is upgraded to Kurtosis 1.18.1. ethereum_package_branch: "6.1.0" test_timeout_minutes: 20 - exec_mode: parallel + commitment_mode: parallel - suite: caplin-minimal package_args: .github/workflows/kurtosis/caplin-minimal-assertoor.io ethereum_package_url: "github.com/erigontech/ethereum-package" ethereum_package_branch: "erigontech/fix-caplin-launcher" test_timeout_minutes: 20 - exec_mode: serial + commitment_mode: serial - suite: caplin-minimal package_args: .github/workflows/kurtosis/caplin-minimal-assertoor.io ethereum_package_url: "github.com/erigontech/ethereum-package" ethereum_package_branch: "erigontech/fix-caplin-launcher" test_timeout_minutes: 20 - exec_mode: parallel + commitment_mode: parallel steps: - name: Fast checkout git repository @@ -502,16 +503,16 @@ jobs: - name: Load erigon base image into daemon run: docker load -i "${RUNNER_TEMP}/erigon-base-image.tar" - - name: Bake exec_mode env into the runtime image + - name: Bake commitment_mode env into the runtime image # Kurtosis launches `test/erigon:current` as the EL participant. - # Add ERIGON_EXEC3_PARALLEL as an ENV layer on top of the shared - # base image so the matrix entries differ only in exec mode. + # Add ERIGON_COMMITMENT_PARALLEL as an ENV layer on top of the shared + # base image so the matrix entries differ only in commitment mode. env: - ERIGON_EXEC3_PARALLEL: ${{ matrix.exec_mode == 'parallel' && 'true' || 'false' }} + ERIGON_COMMITMENT_PARALLEL: ${{ matrix.commitment_mode == 'parallel' && 'true' || 'false' }} run: | docker build -t test/erigon:current - <&2 exit 2 fi -IFS=$'\t' read -r default_workers default_max exec3_parallel <<<"$budget_row" -# Always set ERIGON_EXEC3_PARALLEL explicitly (true or false) so the shard's -# behaviour is pinned to the manifest, independent of whatever dbg.Exec3Parallel -# defaults to at runtime. If the default flips, the shards still run the mode -# they were defined for. -export ERIGON_EXEC3_PARALLEL="$exec3_parallel" +IFS=$'\t' read -r default_workers default_max commitment_parallel <<<"$budget_row" +# Always set ERIGON_COMMITMENT_PARALLEL explicitly (true or false) so the shard's +# commitment mode is pinned to the manifest, independent of whatever +# statecfg.ExperimentalParallelCommitment defaults to at runtime. Execution is +# parallel in every shard (dbg.Exec3Parallel defaults true). +export ERIGON_COMMITMENT_PARALLEL="$commitment_parallel" # Strip "-parallel" / "-sequential" suffix for case-arm routing — both variants # share the same fixture path / regex as the parent shard; only the -# ERIGON_EXEC3_PARALLEL env var differs. +# ERIGON_COMMITMENT_PARALLEL env var differs. shard_route="${shard%-parallel}" shard_route="${shard_route%-sequential}" @@ -193,7 +194,7 @@ echo "max-allowed-failures: $max" # code 66: the Go race runtime's "data race detected" signal, emitted even when # the run completes and the JSON parses clean, so it must be checked explicitly. # The grep filter strips any init-time log lines (e.g. dbg.envLookup's -# "[WARN] [env]" message when ERIGON_EXEC3_PARALLEL is set fires before cmd/evm +# "[WARN] [env]" message when ERIGON_COMMITMENT_PARALLEL is set fires before cmd/evm # sets the log handler, and the default log handler writes to stdout) so jq # sees only JSON. raw_file=$(mktemp)