fix entryverification state (#7169)

automerge
This commit is contained in:
Parth
2019-12-24 12:56:27 +05:30
committed by Grimes
parent ce2d7a2d5a
commit 727be309b2
4 changed files with 118 additions and 67 deletions

View File

@ -1118,7 +1118,7 @@ mod tests {
.collect();
trace!("done");
assert_eq!(entries.len(), genesis_config.ticks_per_slot as usize);
assert!(entries.verify(&start_hash));
assert_eq!(entries.verify(&start_hash), true);
assert_eq!(entries[entries.len() - 1].hash, bank.last_blockhash());
banking_stage.join().unwrap();
}
@ -1220,7 +1220,7 @@ mod tests {
.map(|(_bank, (entry, _tick_height))| entry)
.collect();
assert!(entries.verify(&blockhash));
assert_eq!(entries.verify(&blockhash), true);
if !entries.is_empty() {
blockhash = entries.last().unwrap().hash;
for entry in entries {

View File

@ -9,6 +9,7 @@ use crate::{
rpc_subscriptions::RpcSubscriptions,
thread_mem_usage,
};
use solana_ledger::entry::EntryVerificationStatus;
use solana_ledger::{
bank_forks::BankForks,
block_error::BlockError,
@ -1071,6 +1072,10 @@ impl ReplayStage {
let mut verify_total = Measure::start("verify_and_process_entries");
let mut entry_state = entries.start_verify(last_entry, recyclers.clone());
if entry_state.status() == EntryVerificationStatus::Failure {
return handle_block_error(BlockError::InvalidEntryHash);
}
let mut replay_elapsed = Measure::start("replay_elapsed");
let res =
blocktree_processor::process_entries(bank, entries, true, transaction_status_sender);