[DX03578] speed up local CRE startup #21719
Conversation
|
✅ No conflicts with other open PRs targeting |
|
I see you updated files related to
|
272ccda to
721a668
Compare
721a668 to
da13c82
Compare
There was a problem hiding this comment.
Pull request overview
Risk Rating: HIGH (broad concurrency changes in CRE system-test harness + CI workflow timeout reduction)
This PR speeds up local CRE environment startup by parallelizing several system-test setup steps (node metadata/key generation, JD linking, job proposal/approval) and by reordering some feature initialization to reduce blocking.
Changes:
- Parallelize node metadata/key generation and several job-spec proposal flows while preserving deterministic per-node/spec ordering via a merge helper.
- Parallelize JD linking across DONs and cache/reuse JD chain-config bundle IDs; add timing logs for key steps.
- Add a temporary wait for workflow-worker capability-registry sync state (non-Kubernetes) to mitigate a known race, and reduce GitHub Actions job timeouts.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| system-tests/lib/cre/types.go | Parallelize node metadata creation; add timing logs for node metadata + key generation; extend capability registry input. |
| system-tests/lib/cre/types_test.go | Add tests for newNodes ordering and error index reporting. |
| system-tests/lib/cre/features/solana/v2/solana.go | Parallelize Solana v2 job proposals and merge results deterministically. |
| system-tests/lib/cre/features/evm/v2/evm.go | Parallelize EVM v2 job proposals across (chain,node) work items and merge results deterministically. |
| system-tests/lib/cre/features/read_contract/read_contract.go | Parallelize per-chain job proposals and merge results deterministically. |
| system-tests/lib/cre/features/log_event_trigger/log_event_trigger.go | Parallelize per-chain job proposals and merge results deterministically. |
| system-tests/lib/cre/features/jobhelpers/helpers.go | Add helpers for bounded parallelism + ordered merge of per-worker proposal results. |
| system-tests/lib/cre/features/jobhelpers/helpers_test.go | Add test ensuring merge preserves input order. |
| system-tests/lib/cre/features/sets/sets.go | Reorder features so OCR3-related pieces run later to avoid blocking other job features. |
| system-tests/lib/cre/features/consensus/v2/consensus.go | Minor formatting-only adjustment. |
| system-tests/lib/cre/environment/environment.go | Pass provider into capability-registry configuration; update call to new ctx-aware API; add stage log line. |
| system-tests/lib/cre/don.go | Parallelize DON JD linking, cache OCR2 bundle IDs per chain type, add JD chain-config timing logs, add retry/list helpers, add rounding helper. |
| system-tests/lib/cre/don_test.go | Add tests for JD chain-config creation behavior (skip existing, create missing, timeout). |
| system-tests/lib/cre/don/jobs/jobs.go | Optimize approvals by fetching proposals once per node and approving per node concurrently (sequential within node). |
| system-tests/lib/cre/don/jobs/jobs_test.go | Add tests for approval concurrency/behavior and workflow-spec “already approved” handling. |
| system-tests/lib/cre/contracts/keystone.go | Make capability registry configuration ctx-aware; add post-config wait for workflow-worker registry sync; refactor v1/v2 flows. |
| system-tests/lib/cre/contracts/registry_pickup_wait.go | Add polling logic to wait for workflow-worker DB registry-sync snapshots (non-Kubernetes). |
| .github/workflows/cre-system-tests.yaml | Reduce workflow job timeout from 60 to 10 minutes. |
| .github/workflows/cre-regression-system-tests.yaml | Reduce workflow job timeout from 60 to 10 minutes. |
Scrupulous human review areas:
- Concurrency limiting choices in job proposal paths (especially EVM v2) to avoid overwhelming JD/nodes.
- The new capability-registry sync polling (DB access patterns, timeouts, and correctness of the readiness condition).
- The CI timeout reduction impact on real-world runtime variability (cold caches, image pulls, runner performance).
Suggested reviewers (per CODEOWNERS):
- For system-test harness changes (default owners): @smartcontractkit/core, @smartcontractkit/foundations.
- For workflow/CI timeout changes (
/.github/**): @smartcontractkit/devex-cicd (also @smartcontractkit/devex-tooling, @smartcontractkit/core). - For capability-registry / registrysyncer-adjacent behavior: @smartcontractkit/keystone.
|
* parallelize secrets generation, JD linking and job proposal/approvals * clean up * lints lints * allow CRE system/regression tests to run max 10 minutes in the CI * CR changes




by parallelizing:
Before
or
After
or
(on local machine, without building Docker image)