feat(prune): headers segment triggered by snapshots (#4936)

This commit is contained in:
Alexey Shekhirin
2023-10-09 15:25:48 +01:00
committed by GitHub
parent 670d459147
commit 9ca0cdcf1e
7 changed files with 307 additions and 40 deletions

View File

@ -684,16 +684,19 @@ impl<'this, TX: DbTxMut<'this> + DbTx<'this>> DatabaseProvider<'this, TX> {
let mut deleted = 0;
let mut keys = keys.into_iter();
for key in &mut keys {
if deleted == limit {
break
}
let row = cursor.seek_exact(key.clone())?;
if let Some(row) = row {
cursor.delete_current()?;
deleted += 1;
delete_callback(row);
if limit != 0 {
for key in &mut keys {
let row = cursor.seek_exact(key.clone())?;
if let Some(row) = row {
cursor.delete_current()?;
deleted += 1;
delete_callback(row);
}
if deleted == limit {
break
}
}
}
@ -714,15 +717,17 @@ impl<'this, TX: DbTxMut<'this> + DbTx<'this>> DatabaseProvider<'this, TX> {
let mut walker = cursor.walk_range(keys)?;
let mut deleted = 0;
while let Some(row) = walker.next().transpose()? {
if deleted == limit {
break
}
if limit != 0 {
while let Some(row) = walker.next().transpose()? {
if !skip_filter(&row) {
walker.delete_current()?;
deleted += 1;
delete_callback(row);
}
if !skip_filter(&row) {
walker.delete_current()?;
deleted += 1;
delete_callback(row);
if deleted == limit {
break
}
}
}