From 9b202c6e1ec2b08cb806bf764c7c44646704d578 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Thu, 14 Jun 2018 17:32:39 -0600 Subject: [PATCH] No longer flood log with emtpy entries --- src/bank.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/bank.rs b/src/bank.rs index 73c9740ef2..6ef07f6352 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -315,8 +315,10 @@ impl Bank { I: IntoIterator, { for entry in entries { - for result in self.process_transactions(entry.transactions) { - result?; + if !entry.transactions.is_empty() { + for result in self.process_transactions(entry.transactions) { + result?; + } } self.register_entry_id(&entry.id); } @@ -440,6 +442,7 @@ impl Bank { mod tests { use super::*; use bincode::serialize; + use entry::next_entry; use hash::hash; use signature::KeyPairUtil; @@ -651,6 +654,25 @@ mod tests { // Assert bad transactions aren't counted. assert_eq!(bank.transaction_count(), 1); } + + #[test] + fn test_process_empty_entry_is_registered() { + let mint = Mint::new(1); + let bank = Bank::new(&mint); + let keypair = KeyPair::new(); + let entry = next_entry(&mint.last_id(), 1, vec![]); + let tx = Transaction::new(&mint.keypair(), keypair.pubkey(), 1, entry.id); + + // First, ensure the TX is rejected because of the unregistered last ID + assert_eq!( + bank.process_transaction(&tx), + Err(BankError::LastIdNotFound(entry.id)) + ); + + // Now ensure the TX is accepted despite pointing to the ID of an empty entry. + bank.process_entries(vec![entry]).unwrap(); + assert!(bank.process_transaction(&tx).is_ok()); + } } #[cfg(all(feature = "unstable", test))]