diff --git a/ledger/src/blockstore_processor.rs b/ledger/src/blockstore_processor.rs index b57dc3b9d..fc3ae1d52 100644 --- a/ledger/src/blockstore_processor.rs +++ b/ledger/src/blockstore_processor.rs @@ -1440,9 +1440,8 @@ fn load_frozen_forks( &mut pending_slots, )?; - let halt_at_slot = opts.halt_at_slot.unwrap_or(std::u64::MAX); let on_halt_store_hash_raw_data_for_debug = opts.on_halt_store_hash_raw_data_for_debug; - if bank_forks.read().unwrap().root() != halt_at_slot { + if Some(bank_forks.read().unwrap().root()) != opts.halt_at_slot { let mut set_root_us = 0; let mut root_retain_us = 0; let mut process_single_slot_us = 0; @@ -1588,6 +1587,17 @@ fn load_frozen_forks( slot, ); + let done_processing = opts + .halt_at_slot + .map(|halt_at_slot| slot >= halt_at_slot) + .unwrap_or(false); + if done_processing { + if opts.run_final_accounts_hash_calc { + run_final_hash_calc(&bank, on_halt_store_hash_raw_data_for_debug); + } + break; + } + process_next_slots( &bank, &meta, @@ -1595,13 +1605,6 @@ fn load_frozen_forks( leader_schedule_cache, &mut pending_slots, )?; - - if slot >= halt_at_slot { - if opts.run_final_accounts_hash_calc { - run_final_hash_calc(&bank, on_halt_store_hash_raw_data_for_debug); - } - break; - } } } else if on_halt_store_hash_raw_data_for_debug { run_final_hash_calc(