Verify signature of recovered shred before adding them to blocktree (#5811)
* Verify signature of recovered shred before adding them to blocktree * fix failing tests, and review comments
This commit is contained in:
@ -423,7 +423,7 @@ mod test {
|
||||
let (mut shreds, _) = make_slot_entries(1, 0, 1);
|
||||
let (shreds2, _) = make_slot_entries(5, 2, 1);
|
||||
shreds.extend(shreds2);
|
||||
blocktree.insert_shreds(shreds).unwrap();
|
||||
blocktree.insert_shreds(shreds, None).unwrap();
|
||||
assert_eq!(
|
||||
RepairService::generate_repairs(&blocktree, 0, 2).unwrap(),
|
||||
vec![RepairType::HighestBlob(0, 0), RepairType::Orphan(2)]
|
||||
@ -443,7 +443,7 @@ mod test {
|
||||
|
||||
// Write this blob to slot 2, should chain to slot 0, which we haven't received
|
||||
// any blobs for
|
||||
blocktree.insert_shreds(shreds).unwrap();
|
||||
blocktree.insert_shreds(shreds, None).unwrap();
|
||||
|
||||
// Check that repair tries to patch the empty slot
|
||||
assert_eq!(
|
||||
@ -479,7 +479,7 @@ mod test {
|
||||
missing_indexes_per_slot.insert(0, index);
|
||||
}
|
||||
}
|
||||
blocktree.insert_shreds(shreds_to_write).unwrap();
|
||||
blocktree.insert_shreds(shreds_to_write, None).unwrap();
|
||||
|
||||
let expected: Vec<RepairType> = (0..num_slots)
|
||||
.flat_map(|slot| {
|
||||
@ -517,7 +517,7 @@ mod test {
|
||||
// Remove last shred (which is also last in slot) so that slot is not complete
|
||||
shreds.pop();
|
||||
|
||||
blocktree.insert_shreds(shreds).unwrap();
|
||||
blocktree.insert_shreds(shreds, None).unwrap();
|
||||
|
||||
// We didn't get the last blob for this slot, so ask for the highest blob for that slot
|
||||
let expected: Vec<RepairType> =
|
||||
@ -543,7 +543,7 @@ mod test {
|
||||
let shreds = make_chaining_slot_entries(&slots, num_entries_per_slot);
|
||||
for (mut slot_shreds, _) in shreds.into_iter() {
|
||||
slot_shreds.remove(0);
|
||||
blocktree.insert_shreds(slot_shreds).unwrap();
|
||||
blocktree.insert_shreds(slot_shreds, None).unwrap();
|
||||
}
|
||||
|
||||
// Iterate through all possible combinations of start..end (inclusive on both
|
||||
@ -595,7 +595,7 @@ mod test {
|
||||
let parent = if i > 0 { i - 1 } else { 0 };
|
||||
let (shreds, _) = make_slot_entries(i, parent, num_entries_per_slot as u64);
|
||||
|
||||
blocktree.insert_shreds(shreds).unwrap();
|
||||
blocktree.insert_shreds(shreds, None).unwrap();
|
||||
}
|
||||
|
||||
let end = 4;
|
||||
@ -648,8 +648,10 @@ mod test {
|
||||
.collect();
|
||||
let mut full_slots = BTreeSet::new();
|
||||
|
||||
blocktree.insert_shreds(fork1_shreds).unwrap();
|
||||
blocktree.insert_shreds(fork2_incomplete_shreds).unwrap();
|
||||
blocktree.insert_shreds(fork1_shreds, None).unwrap();
|
||||
blocktree
|
||||
.insert_shreds(fork2_incomplete_shreds, None)
|
||||
.unwrap();
|
||||
|
||||
// Test that only slots > root from fork1 were included
|
||||
let epoch_schedule = EpochSchedule::new(32, 32, false);
|
||||
@ -672,7 +674,7 @@ mod test {
|
||||
.into_iter()
|
||||
.flat_map(|(shreds, _)| shreds)
|
||||
.collect();
|
||||
blocktree.insert_shreds(fork3_shreds).unwrap();
|
||||
blocktree.insert_shreds(fork3_shreds, None).unwrap();
|
||||
RepairService::get_completed_slots_past_root(
|
||||
&blocktree,
|
||||
&mut full_slots,
|
||||
@ -719,7 +721,7 @@ mod test {
|
||||
let step = rng.gen_range(1, max_step + 1) as usize;
|
||||
let step = std::cmp::min(step, num_shreds - i);
|
||||
let shreds_to_insert = shreds.drain(..step).collect_vec();
|
||||
blocktree_.insert_shreds(shreds_to_insert).unwrap();
|
||||
blocktree_.insert_shreds(shreds_to_insert, None).unwrap();
|
||||
sleep(Duration::from_millis(repair_interval_ms));
|
||||
i += step;
|
||||
}
|
||||
@ -749,7 +751,7 @@ mod test {
|
||||
// Update with new root, should filter out the slots <= root
|
||||
root = num_slots / 2;
|
||||
let (shreds, _) = make_slot_entries(num_slots + 2, num_slots + 1, entries_per_slot);
|
||||
blocktree.insert_shreds(shreds).unwrap();
|
||||
blocktree.insert_shreds(shreds, None).unwrap();
|
||||
RepairService::update_epoch_slots(
|
||||
Pubkey::default(),
|
||||
root,
|
||||
|
Reference in New Issue
Block a user