diff --git a/core/src/broadcast_stage/standard_broadcast_run.rs b/core/src/broadcast_stage/standard_broadcast_run.rs index 5a2100181..36d48c23e 100644 --- a/core/src/broadcast_stage/standard_broadcast_run.rs +++ b/core/src/broadcast_stage/standard_broadcast_run.rs @@ -141,13 +141,7 @@ impl StandardBroadcastRun { { self.slot_broadcast_start = Some(Instant::now()); let slot = bank.slot(); - let parent_slot = { - if let Some(parent_bank) = bank.parent() { - parent_bank.slot() - } else { - 0 - } - }; + let parent_slot = bank.parent_slot(); self.current_slot_and_parent = Some((slot, parent_slot)); receive_elapsed = Duration::new(0, 0); diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index abd065d33..4a7131376 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -180,6 +180,8 @@ pub struct Bank { /// Hash of this Bank's parent's state parent_hash: Hash, + parent_slot: u64, + /// The number of transactions processed without error #[serde(serialize_with = "serialize_atomicu64")] #[serde(deserialize_with = "deserialize_atomicu64")] @@ -358,6 +360,7 @@ impl Bank { epoch_stakes: parent.epoch_stakes.clone(), storage_accounts: RwLock::new(parent.storage_accounts.read().unwrap().clone()), parent_hash: parent.hash(), + parent_slot: parent.slot(), collector_id: *collector_id, collector_fees: AtomicU64::new(0), ancestors: HashMap::new(), @@ -662,6 +665,10 @@ impl Bank { self.rc.parent.read().unwrap().clone() } + pub fn parent_slot(&self) -> u64 { + self.parent_slot + } + fn process_genesis_config(&mut self, genesis_config: &GenesisConfig) { // Bootstrap leader collects fees until `new_from_parent` is called. self.fee_calculator = genesis_config.fee_calculator.clone();