From de52747950b374d28fbc56b2ea08292d28bf7af5 Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Sun, 14 Apr 2019 19:15:31 -0700 Subject: [PATCH] remove max_tick_height replicode (#3765) --- core/src/broadcast_stage.rs | 4 ++-- runtime/src/bank.rs | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/src/broadcast_stage.rs b/core/src/broadcast_stage.rs index a2df995e48..c23227dc16 100644 --- a/core/src/broadcast_stage.rs +++ b/core/src/broadcast_stage.rs @@ -45,7 +45,7 @@ impl Broadcast { ) -> Result<()> { let timer = Duration::new(1, 0); let (mut bank, entries) = receiver.recv_timeout(timer)?; - let mut max_tick_height = (bank.slot() + 1) * bank.ticks_per_slot() - 1; + let mut max_tick_height = bank.max_tick_height(); let now = Instant::now(); let mut num_entries = entries.len(); @@ -62,7 +62,7 @@ impl Broadcast { num_entries = 0; ventries.clear(); bank = same_bank.clone(); - max_tick_height = (bank.slot() + 1) * bank.ticks_per_slot() - 1; + max_tick_height = bank.max_tick_height(); } num_entries += entries.len(); last_tick = entries.last().map(|v| v.1).unwrap_or(0); diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 27e776c03a..fa69a3e6ba 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -136,6 +136,9 @@ pub struct Bank { /// Bank tick height tick_height: AtomicUsize, // TODO: Use AtomicU64 if/when available + // Bank max_tick_height + max_tick_height: u64, + /// The number of ticks in each slot. ticks_per_slot: u64, @@ -209,6 +212,8 @@ impl Bank { bank.epoch_schedule = parent.epoch_schedule; bank.slot = slot; + bank.max_tick_height = (bank.slot + 1) * bank.ticks_per_slot - 1; + bank.parent = RwLock::new(Some(parent.clone())); bank.parent_hash = parent.hash(); bank.collector_id = *collector_id; @@ -345,6 +350,7 @@ impl Bank { .genesis_hash(&genesis_block.hash()); self.ticks_per_slot = genesis_block.ticks_per_slot; + self.max_tick_height = (self.slot + 1) * self.ticks_per_slot - 1; // make bank 0 votable self.is_delta.store(true, Ordering::Relaxed); @@ -928,6 +934,11 @@ impl Bank { self.tick_height.load(Ordering::SeqCst) as u64 } + /// Return this bank's max_tick_height + pub fn max_tick_height(&self) -> u64 { + self.max_tick_height + } + /// Return the number of slots per epoch for the given epoch pub fn get_slots_in_epoch(&self, epoch: u64) -> u64 { self.epoch_schedule.get_slots_in_epoch(epoch)