align tick entries' tick_height with actual number of ticks in bank (#2147)
This commit is contained in:
@ -60,7 +60,7 @@ fn broadcast(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(Some(last)) = ventries.last().map(|entries| entries.last()) {
|
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);
|
inc_new_counter_info!("broadcast_service-entries_received", num_entries);
|
||||||
@ -198,8 +198,13 @@ fn generate_slots(
|
|||||||
let slot_heights: Vec<u64> = p
|
let slot_heights: Vec<u64> = p
|
||||||
.iter()
|
.iter()
|
||||||
.map(|e| {
|
.map(|e| {
|
||||||
|
let tick_height = if e.is_tick() {
|
||||||
|
e.tick_height
|
||||||
|
} else {
|
||||||
|
e.tick_height + 1
|
||||||
|
};
|
||||||
let (_, slot) = r_leader_scheduler
|
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");
|
.expect("Leader schedule should never be unknown while indexing blobs");
|
||||||
slot
|
slot
|
||||||
})
|
})
|
||||||
@ -449,7 +454,7 @@ mod test {
|
|||||||
);
|
);
|
||||||
for (i, mut tick) in ticks.into_iter().enumerate() {
|
for (i, mut tick) in ticks.into_iter().enumerate() {
|
||||||
// Simulate the tick heights generated in poh.rs
|
// 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
|
broadcast_service
|
||||||
.entry_sender
|
.entry_sender
|
||||||
.send(vec![tick])
|
.send(vec![tick])
|
||||||
|
@ -51,12 +51,10 @@ impl Poh {
|
|||||||
|
|
||||||
let num_hashes = self.num_hashes;
|
let num_hashes = self.num_hashes;
|
||||||
self.num_hashes = 0;
|
self.num_hashes = 0;
|
||||||
|
|
||||||
let tick_height = self.tick_height;
|
|
||||||
self.tick_height += 1;
|
self.tick_height += 1;
|
||||||
|
|
||||||
PohEntry {
|
PohEntry {
|
||||||
tick_height,
|
tick_height: self.tick_height,
|
||||||
num_hashes,
|
num_hashes,
|
||||||
id: self.id,
|
id: self.id,
|
||||||
mixin: None,
|
mixin: None,
|
||||||
|
@ -139,11 +139,11 @@ mod tests {
|
|||||||
|
|
||||||
assert!(poh_recorder.tick().is_ok());
|
assert!(poh_recorder.tick().is_ok());
|
||||||
let e = entry_receiver.recv().unwrap();
|
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());
|
assert!(poh_recorder.tick().is_ok());
|
||||||
let e = entry_receiver.recv().unwrap();
|
let e = entry_receiver.recv().unwrap();
|
||||||
assert_eq!(e[0].tick_height, 2);
|
assert_eq!(e[0].tick_height, 3);
|
||||||
|
|
||||||
// max tick height reached
|
// max tick height reached
|
||||||
assert!(poh_recorder.tick().is_err());
|
assert!(poh_recorder.tick().is_err());
|
||||||
|
Reference in New Issue
Block a user