Conversation
* master: (82 commits) fix: continue startup when some pubsub clients fail (#918) fix: broken links in README (#922) release: 0.6.2 (#913) feat: Intent bundles (#874) feat: retry subscription per pubkey (#908) feat: startup time instrumentation and improvements (#912) fix: persist sysvars on slot boundaries (#911) fix: expose transaction count metric (#907) feat: log client IDs in subscription task warning (#902) feat: more insight and fix attempt for gRPC laser client errors (#900) chore: refactor log level (#906) feat: enable ed25519, secp256k1 and secp256r1 precompiles (#899) feat: chain_slot and resub count metrics (#898) feat: add pubsub client reconnection metrics (#889) chore: revert #865 (649ed7c) to reenable original owner program subs (#888) chore: exponential backoff for websocket resubscription (#886) feat: add grpc slot subscriptions (#887) fix: return signatures above last valid slot (#881) refactor: simplify accounts-db crate (#879) fix: remove programs on startup (#880) ...
Amp-Thread-ID: https://ampcode.com/threads/T-019c2241-6f4f-71b6-aae5-e16e069ae4fc Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019c2260-634f-714d-8c42-1de9f9cb810f Co-authored-by: Amp <amp@ampcode.com>
Manual Deploy AvailableYou can trigger a manual deploy of this PR branch to testnet: Alternative: Comment
Comment updated automatically when the PR is synchronized. |
📝 WalkthroughWalkthroughAdds lifecycle-mode awareness across the codebase and a new access-permission enforcement flag. Two new LifecycleMode predicates, Suggested reviewers
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
* master: feat: enable poseidon syscall (#923)
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
test-integration/test-tools/src/integration_test_context.rs (1)
495-522:⚠️ Potential issue | 🟡 MinorUse
dump_ephemeral_logsfor ephem airdrop failures.
airdrop_ephemwires the failure callback todump_chain_logs, so ephem failures log the wrong cluster.Proposed fix
- Some(&(|sig| self.dump_chain_logs(sig))), + Some(&(|sig| self.dump_ephemeral_logs(sig))),
🤖 Fix all issues with AI agents
In `@Cargo.toml`:
- Line 235: The workspace lists solana-svm as a git dependency at rev "569cb82"
but the crates-io patch points to a different source which can create mixed
sources; inspect the dependency graph and ensure all references to solana-svm
resolve to a single source (either make the patch point to the same git rev
"569cb82" or switch the workspace dependency to a path override), update the
crates-io patch or workspace dependency so transitive crates cannot pull a
different solana-svm source, and re-run cargo update/cargo metadata to verify a
single source for the solana-svm crate.
In `@test-integration/test-config/tests/lifecycle_modes_cloning.rs`:
- Around line 200-203: The fixed 500ms sleep before calling
ctx.fetch_ephem_account(pubkey) can cause flakiness; replace the unconditional
std::thread::sleep(...) + immediate ctx.fetch_ephem_account call with a bounded
polling loop that repeatedly calls ctx.fetch_ephem_account(pubkey) (or a
light-weight status check on the ephemeral validator) until the account is
present or a deadline is reached (e.g., loop with small sleep intervals and a
total timeout), and return or assert failure if the timeout elapses to avoid
indefinite waits.
Amp-Thread-ID: https://ampcode.com/threads/T-019c2c9e-49ac-73f9-9fed-f92965513f3e Co-authored-by: Amp <amp@ampcode.com>
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
test-integration/test-tools/src/integration_test_context.rs (1)
673-689:⚠️ Potential issue | 🟡 MinorInvoke
on_erroron confirmation errors too.
Ifconfirm_transactionreturnsErr, the callback never runs, so logs aren’t dumped. Trigger it before returning the error to aid debugging.Proposed fix
- let succeeded = confirm_transaction( - &sig, - rpc_client, - commitment_config, - None, - ) - .with_context(|| { - format!( - "Failed to confirm airdrop chain account '{:?}'", - pubkey - ) - })?; - if !succeeded { - if let Some(on_error) = on_error { - on_error(sig); - } - return Err(anyhow::anyhow!( - "Failed to airdrop chain account '{:?}'", - pubkey - )); - } - return Ok(sig); + let succeeded = confirm_transaction( + &sig, + rpc_client, + commitment_config, + None, + ) + .with_context(|| { + format!( + "Failed to confirm airdrop chain account '{:?}'", + pubkey + ) + }); + match succeeded { + Ok(true) => return Ok(sig), + Ok(false) => { + if let Some(on_error) = on_error { + on_error(sig); + } + return Err(anyhow::anyhow!( + "Failed to airdrop chain account '{:?}'", + pubkey + )); + } + Err(err) => { + if let Some(on_error) = on_error { + on_error(sig); + } + return Err(err); + } + }
🤖 Fix all issues with AI agents
In `@test-integration/test-config/tests/lifecycle_modes_cloning.rs`:
- Around line 211-229: The assertion messages for cloned_account lack the
account pubkey and the "for" fragment is incomplete; update both assert_eq!
calls to include the relevant account pubkey and lifecycle_mode in the message
(e.g., add the account's pubkey obtained from the test context or the account
variable — reference symbols: cloned_account, expect_clone, lifecycle_mode, ctx,
validator, cleanup) so the failure message reads something like "Account
{pubkey} should have been cloned in {:?} mode" or "Account {pubkey} should NOT
have been cloned in {:?} mode" and keep the existing cleanup(&mut validator)
call as the custom message parameter.
Summary
Implement lifecycle mode support for configuring account cloning and access control behavior.
This allows validators to run in different modes (ephemeral vs non-ephemeral) with separate
enforcement of access permissions and program cloning restrictions.
Details
Lifecycle Mode Configuration
Added configurable lifecycle mode that can be set per validator instance, allowing different operational modes with distinct cloning and access control behaviors:
Account Cloning and Access Control
Test Infrastructure Improvements
test-tools/src/scenario_setup.rsfor reuse across integration testsChainlink Integration
Test Ledger Restore
Summary by CodeRabbit
New Features
Behavioral Changes
Tests
Chores