diff --git a/core/src/commitment.rs b/core/src/commitment.rs index 427a7b64d36d1e..7de5d07376f0a5 100644 --- a/core/src/commitment.rs +++ b/core/src/commitment.rs @@ -180,7 +180,6 @@ impl BlockCommitmentCache { } } - #[cfg(test)] pub(crate) fn set_get_largest_confirmed_root(&mut self, root: Slot) { self.largest_confirmed_root = root; } diff --git a/core/src/validator.rs b/core/src/validator.rs index 8f732b3bf77d4c..c4ab4886d97061 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -304,6 +304,13 @@ impl Validator { ); if config.dev_halt_at_slot.is_some() { + // Simulate a confirmed root to avoid RPC errors with CommitmentmentConfig::max() and + // to ensure RPC endpoints like getConfirmedBlock, which require a confirmed root, work + block_commitment_cache + .write() + .unwrap() + .set_get_largest_confirmed_root(bank_forks.read().unwrap().root()); + // Park with the RPC service running, ready for inspection! warn!("Validator halted"); std::thread::park();