diff --git a/core/src/blocktree.rs b/core/src/blocktree.rs index 7da3ce219..23187f29b 100644 --- a/core/src/blocktree.rs +++ b/core/src/blocktree.rs @@ -234,116 +234,48 @@ impl Blocktree { // Returns whether or not all iterators have reached their end fn run_purge_batch(&self, from_slot: Slot, batch_end: Slot) -> Result { - let mut end = true; let from_slot = Some(from_slot); let batch_end = Some(batch_end); + unsafe { let mut batch_processor = self.db.batch_processor(); let mut write_batch = batch_processor .batch() .expect("Database Error: Failed to get write batch"); - end &= match self + let end = self .meta_cf .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .data_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .erasure_meta_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .erasure_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .orphans_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .index_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - end &= match self - .dead_slots_cf - .delete_slot(&mut write_batch, from_slot, batch_end) - { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; - let roots_cf = self.db.column::(); - end &= match roots_cf.delete_slot(&mut write_batch, from_slot, batch_end) { - Ok(finished) => finished, - Err(e) => { - error!( - "Error: {:?} while deleting meta_cf for slot {:?}", - e, from_slot - ); - false - } - }; + .unwrap_or(false) + && self + .data_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .erasure_meta_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .erasure_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .orphans_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .index_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .dead_slots_cf + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false) + && self + .db + .column::() + .delete_slot(&mut write_batch, from_slot, batch_end) + .unwrap_or(false); + if let Err(e) = batch_processor.write(write_batch) { error!( "Error: {:?} while submitting write batch for slot {:?} retrying...", diff --git a/core/src/blocktree/db.rs b/core/src/blocktree/db.rs index 2c14e7052..7982a56ac 100644 --- a/core/src/blocktree/db.rs +++ b/core/src/blocktree/db.rs @@ -439,7 +439,12 @@ where } }; if let Err(e) = batch.delete::(index) { - error!("Error: {:?} while adding delete to batch {:?}", e, C::NAME) + error!( + "Error: {:?} while adding delete from_slot {:?} to batch {:?}", + e, + from, + C::NAME + ) } } Ok(end)