From 6fcccedb7037cf5f9a6cef6a71cd90f1c1f384d3 Mon Sep 17 00:00:00 2001 From: carllin Date: Fri, 14 Dec 2018 02:25:50 -0800 Subject: [PATCH] align tick entries' tick_height with actual number of ticks in bank (#2147) --- src/broadcast_service.rs | 11 ++++++++--- src/poh.rs | 4 +--- src/poh_recorder.rs | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/broadcast_service.rs b/src/broadcast_service.rs index 859b25c93..a38d64614 100644 --- a/src/broadcast_service.rs +++ b/src/broadcast_service.rs @@ -60,7 +60,7 @@ fn broadcast( } if let Some(Some(last)) = ventries.last().map(|entries| entries.last()) { - contains_last_tick |= Some(last.tick_height + 1) == max_tick_height && last.is_tick(); + contains_last_tick |= Some(last.tick_height) == max_tick_height; } inc_new_counter_info!("broadcast_service-entries_received", num_entries); @@ -198,8 +198,13 @@ fn generate_slots( let slot_heights: Vec = p .iter() .map(|e| { + let tick_height = if e.is_tick() { + e.tick_height + } else { + e.tick_height + 1 + }; let (_, slot) = r_leader_scheduler - .get_scheduled_leader(e.tick_height + 1) + .get_scheduled_leader(tick_height) .expect("Leader schedule should never be unknown while indexing blobs"); slot }) @@ -449,7 +454,7 @@ mod test { ); for (i, mut tick) in ticks.into_iter().enumerate() { // Simulate the tick heights generated in poh.rs - tick.tick_height = start_tick_height + i as u64; + tick.tick_height = start_tick_height + i as u64 + 1; broadcast_service .entry_sender .send(vec![tick]) diff --git a/src/poh.rs b/src/poh.rs index 26d9b4dec..019ccc694 100644 --- a/src/poh.rs +++ b/src/poh.rs @@ -51,12 +51,10 @@ impl Poh { let num_hashes = self.num_hashes; self.num_hashes = 0; - - let tick_height = self.tick_height; self.tick_height += 1; PohEntry { - tick_height, + tick_height: self.tick_height, num_hashes, id: self.id, mixin: None, diff --git a/src/poh_recorder.rs b/src/poh_recorder.rs index cb0636f80..11e3282be 100644 --- a/src/poh_recorder.rs +++ b/src/poh_recorder.rs @@ -139,11 +139,11 @@ mod tests { assert!(poh_recorder.tick().is_ok()); let e = entry_receiver.recv().unwrap(); - assert_eq!(e[0].tick_height, 1); + assert_eq!(e[0].tick_height, 2); assert!(poh_recorder.tick().is_ok()); let e = entry_receiver.recv().unwrap(); - assert_eq!(e[0].tick_height, 2); + assert_eq!(e[0].tick_height, 3); // max tick height reached assert!(poh_recorder.tick().is_err());