Ledger purge printing (#15176)
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct PurgeStats {
|
pub struct PurgeStats {
|
||||||
@ -47,6 +48,10 @@ impl Blockstore {
|
|||||||
///
|
///
|
||||||
/// Dangerous; Use with care
|
/// Dangerous; Use with care
|
||||||
pub fn purge_from_next_slots(&self, from_slot: Slot, to_slot: Slot) {
|
pub fn purge_from_next_slots(&self, from_slot: Slot, to_slot: Slot) {
|
||||||
|
let mut count = 0;
|
||||||
|
let mut rewritten = 0;
|
||||||
|
let mut last_print = Instant::now();
|
||||||
|
let mut total_retain_us = 0;
|
||||||
for (slot, mut meta) in self
|
for (slot, mut meta) in self
|
||||||
.slot_meta_iterator(0)
|
.slot_meta_iterator(0)
|
||||||
.expect("unable to iterate over meta")
|
.expect("unable to iterate over meta")
|
||||||
@ -55,10 +60,23 @@ impl Blockstore {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count += 1;
|
||||||
|
if last_print.elapsed().as_millis() > 2000 {
|
||||||
|
info!(
|
||||||
|
"purged: {} slots rewritten: {} retain_time: {}us",
|
||||||
|
count, rewritten, total_retain_us
|
||||||
|
);
|
||||||
|
count = 0;
|
||||||
|
rewritten = 0;
|
||||||
|
total_retain_us = 0;
|
||||||
|
last_print = Instant::now();
|
||||||
|
}
|
||||||
|
let mut time = Measure::start("retain");
|
||||||
let original_len = meta.next_slots.len();
|
let original_len = meta.next_slots.len();
|
||||||
meta.next_slots
|
meta.next_slots
|
||||||
.retain(|slot| *slot < from_slot || *slot > to_slot);
|
.retain(|slot| *slot < from_slot || *slot > to_slot);
|
||||||
if meta.next_slots.len() != original_len {
|
if meta.next_slots.len() != original_len {
|
||||||
|
rewritten += 1;
|
||||||
info!(
|
info!(
|
||||||
"purge_from_next_slots: meta for slot {} no longer refers to slots {:?}",
|
"purge_from_next_slots: meta for slot {} no longer refers to slots {:?}",
|
||||||
slot,
|
slot,
|
||||||
@ -70,6 +88,8 @@ impl Blockstore {
|
|||||||
)
|
)
|
||||||
.expect("couldn't update meta");
|
.expect("couldn't update meta");
|
||||||
}
|
}
|
||||||
|
time.stop();
|
||||||
|
total_retain_us += time.as_us();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user