Minor cleanup to Bank and LastIdQueue
This commit is contained in:
parent
25690ff078
commit
feefdca969
|
@ -254,11 +254,7 @@ impl Bank {
|
||||||
|
|
||||||
/// Return the last entry ID registered.
|
/// Return the last entry ID registered.
|
||||||
pub fn last_id(&self) -> Hash {
|
pub fn last_id(&self) -> Hash {
|
||||||
self.last_id_queue
|
self.last_id_queue.read().unwrap().last_id()
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.last_id
|
|
||||||
.expect("no last_id has been set")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Forget all signatures. Useful for benchmarking.
|
/// Forget all signatures. Useful for benchmarking.
|
||||||
|
@ -308,7 +304,7 @@ impl Bank {
|
||||||
let mut last_id_queue = self.last_id_queue.write().unwrap();
|
let mut last_id_queue = self.last_id_queue.write().unwrap();
|
||||||
inc_new_counter_info!("bank-register_tick-registered", 1);
|
inc_new_counter_info!("bank-register_tick-registered", 1);
|
||||||
last_id_queue.register_tick(last_id);
|
last_id_queue.register_tick(last_id);
|
||||||
last_id_queue.tick_height
|
last_id_queue.tick_height()
|
||||||
};
|
};
|
||||||
if current_tick_height % NUM_TICKS_PER_SECOND as u64 == 0 {
|
if current_tick_height % NUM_TICKS_PER_SECOND as u64 == 0 {
|
||||||
self.status_cache.write().unwrap().new_cache(last_id);
|
self.status_cache.write().unwrap().new_cache(last_id);
|
||||||
|
@ -718,6 +714,20 @@ impl Bank {
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the checkpointed stakes that should be used to generate a leader schedule.
|
||||||
|
fn staked_nodes_at_slot(&self, slot_height: u64) -> HashMap<Pubkey, u64> {
|
||||||
|
let parents = self.parents();
|
||||||
|
let mut banks = vec![self];
|
||||||
|
banks.extend(parents.iter().map(|x| x.as_ref()));
|
||||||
|
|
||||||
|
let bank = banks
|
||||||
|
.iter()
|
||||||
|
.find(|bank| bank.slot_height() <= slot_height)
|
||||||
|
.unwrap_or_else(|| banks.last().unwrap());
|
||||||
|
|
||||||
|
bank.staked_nodes()
|
||||||
|
}
|
||||||
|
|
||||||
/// Return the number of ticks per slot that should be used calls to slot_height().
|
/// Return the number of ticks per slot that should be used calls to slot_height().
|
||||||
pub fn ticks_per_slot(&self) -> u64 {
|
pub fn ticks_per_slot(&self) -> u64 {
|
||||||
self.ticks_per_slot
|
self.ticks_per_slot
|
||||||
|
@ -731,18 +741,8 @@ impl Bank {
|
||||||
/// Return the checkpointed stakes that should be used to generate a leader schedule.
|
/// Return the checkpointed stakes that should be used to generate a leader schedule.
|
||||||
fn staked_nodes_at_epoch(&self, epoch_height: u64) -> HashMap<Pubkey, u64> {
|
fn staked_nodes_at_epoch(&self, epoch_height: u64) -> HashMap<Pubkey, u64> {
|
||||||
let epoch_slot_height = epoch_height * self.slots_per_epoch();
|
let epoch_slot_height = epoch_height * self.slots_per_epoch();
|
||||||
let expected = epoch_slot_height.saturating_sub(self.stakers_slot_offset);
|
let slot_height = epoch_slot_height.saturating_sub(self.stakers_slot_offset);
|
||||||
|
self.staked_nodes_at_slot(slot_height)
|
||||||
let parents = self.parents();
|
|
||||||
let mut banks = vec![self];
|
|
||||||
banks.extend(parents.iter().map(|x| x.as_ref()));
|
|
||||||
|
|
||||||
let bank = banks
|
|
||||||
.iter()
|
|
||||||
.find(|bank| bank.slot_height() <= expected)
|
|
||||||
.unwrap_or_else(|| banks.last().unwrap());
|
|
||||||
|
|
||||||
bank.staked_nodes()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the leader schedule for the given epoch.
|
/// Return the leader schedule for the given epoch.
|
||||||
|
@ -816,7 +816,7 @@ impl Bank {
|
||||||
|
|
||||||
/// Return the number of ticks since genesis.
|
/// Return the number of ticks since genesis.
|
||||||
pub fn tick_height(&self) -> u64 {
|
pub fn tick_height(&self) -> u64 {
|
||||||
self.last_id_queue.read().unwrap().tick_height
|
self.last_id_queue.read().unwrap().tick_height()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the number of ticks since the last slot boundary.
|
/// Return the number of ticks since the last slot boundary.
|
||||||
|
|
|
@ -12,10 +12,10 @@ struct LastIdEntry {
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct LastIdQueue {
|
pub struct LastIdQueue {
|
||||||
/// updated whenever an id is registered, at each tick ;)
|
/// updated whenever an id is registered, at each tick ;)
|
||||||
pub tick_height: u64,
|
tick_height: u64,
|
||||||
|
|
||||||
/// last tick to be registered
|
/// last tick to be registered
|
||||||
pub last_id: Option<Hash>,
|
last_id: Option<Hash>,
|
||||||
|
|
||||||
entries: HashMap<Hash, LastIdEntry>,
|
entries: HashMap<Hash, LastIdEntry>,
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,14 @@ impl Default for LastIdQueue {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LastIdQueue {
|
impl LastIdQueue {
|
||||||
|
pub fn tick_height(&self) -> u64 {
|
||||||
|
self.tick_height
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn last_id(&self) -> Hash {
|
||||||
|
self.last_id.expect("no last_id has been set")
|
||||||
|
}
|
||||||
|
|
||||||
/// Check if the age of the entry_id is within the max_age
|
/// Check if the age of the entry_id is within the max_age
|
||||||
/// return false for any entries with an age equal to or above max_age
|
/// return false for any entries with an age equal to or above max_age
|
||||||
pub fn check_entry_id_age(&self, entry_id: Hash, max_age: usize) -> bool {
|
pub fn check_entry_id_age(&self, entry_id: Hash, max_age: usize) -> bool {
|
||||||
|
|
Loading…
Reference in New Issue