Skip to content

Commit

Permalink
v1.18: blockstore: relax parent slot meta check for clear_unconfirmed…
Browse files Browse the repository at this point in the history
…_slot (#68)

blockstore: relax parent slot meta check for clear_unconfirmed_slot
  • Loading branch information
AshwinSekar authored Mar 8, 2024
1 parent d4678fc commit a6e731f
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions ledger/src/blockstore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1179,18 +1179,25 @@ impl Blockstore {

// Clear this slot as a next slot from parent
if let Some(parent_slot) = slot_meta.parent_slot {
let mut parent_slot_meta = self
if let Some(mut parent_slot_meta) = self
.meta(parent_slot)
.expect("Couldn't fetch from SlotMeta column family")
.expect("Unconfirmed slot should have had parent slot set");
// .retain() is a linear scan; however, next_slots should
// only contain several elements so this isn't so bad
parent_slot_meta
.next_slots
.retain(|&next_slot| next_slot != slot);
self.meta_cf
.put(parent_slot, &parent_slot_meta)
.expect("Couldn't insert into SlotMeta column family");
{
// .retain() is a linear scan; however, next_slots should
// only contain several elements so this isn't so bad
parent_slot_meta
.next_slots
.retain(|&next_slot| next_slot != slot);
self.meta_cf
.put(parent_slot, &parent_slot_meta)
.expect("Couldn't insert into SlotMeta column family");
} else {
error!(
"Parent slot meta {} for child {} is missing or cleaned up.
Falling back to orphan repair to remedy the situation",
parent_slot, slot
);
}
}
// Reinsert parts of `slot_meta` that are important to retain, like the `next_slots`
// field.
Expand Down

0 comments on commit a6e731f

Please sign in to comment.