Skip to content

Commit

Permalink
Add index repair progress bar (ordinals#2904)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikicat authored and torkelrogstad committed Mar 11, 2024
1 parent 5abbde2 commit b3cab9e
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions src/index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ use {
log::log_enabled,
redb::{
Database, DatabaseError, MultimapTable, MultimapTableDefinition, MultimapTableHandle,
ReadOnlyTable, ReadableMultimapTable, ReadableTable, RedbKey, RedbValue, StorageError, Table,
TableDefinition, TableHandle, WriteTransaction,
ReadOnlyTable, ReadableMultimapTable, ReadableTable, RedbKey, RedbValue, RepairSession,
StorageError, Table, TableDefinition, TableHandle, WriteTransaction,
},
std::{
collections::{BTreeSet, HashMap},
io::{BufWriter, Write},
sync::Once,
sync::{Mutex, Once},
},
};

Expand Down Expand Up @@ -244,12 +244,27 @@ impl Index {

let index_path = path.clone();
let once = Once::new();
let progress_bar = Mutex::new(None);

let database = match Database::builder()
.set_cache_size(db_cache_size)
.set_repair_callback(move |_| {
once.call_once(|| {
println!("Index file `{}` needs recovery. This can take a long time, especially for the --index-sats index.", index_path.display());
})
.set_repair_callback(move |progress: &mut RepairSession| {
once.call_once(|| println!("Index file `{}` needs recovery. This can take a long time, especially for the --index-sats index.", index_path.display()));

if !(cfg!(test) || log_enabled!(log::Level::Info) || integration_test()) {
let mut guard = progress_bar.lock().unwrap();

let progress_bar = guard.get_or_insert_with(|| {
let progress_bar = ProgressBar::new(100);
progress_bar.set_style(
ProgressStyle::with_template("[repairing database] {wide_bar} {pos}/{len}").unwrap(),
);
progress_bar
});

#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
progress_bar.set_position((progress.progress() * 100.0) as u64);
}
})
.open(&path)
{
Expand Down

0 comments on commit b3cab9e

Please sign in to comment.