From b8d19a541782812a4cd02a408344760d83b7b4e0 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Thu, 6 Sep 2018 18:19:07 +0200 Subject: Add direct-to-db adding of paths instead of memory only Signed-off-by: Florian Pritz --- lib/App/BorgRestore.pm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'lib/App/BorgRestore.pm') diff --git a/lib/App/BorgRestore.pm b/lib/App/BorgRestore.pm index cad8cb1..caf96e9 100644 --- a/lib/App/BorgRestore.pm +++ b/lib/App/BorgRestore.pm @@ -8,6 +8,7 @@ our $VERSION = "3.1.0"; use App::BorgRestore::Borg; use App::BorgRestore::DB; use App::BorgRestore::Helper; +use App::BorgRestore::PathTimeTable::DB; use App::BorgRestore::PathTimeTable::Memory; use App::BorgRestore::Settings; @@ -442,9 +443,15 @@ method _handle_added_archives($borg_archives) { for my $archive (@$add_archives) { my $start = Time::HiRes::gettimeofday(); - my $lookuptable = App::BorgRestore::PathTimeTable::Memory->new({db => $self->{db}}); + my $lookuptable_class = $App::BorgRestore::Settings::prepare_data_in_memory == 1 ? "Memory" : "DB"; + $log->debugf("Using '%s' class for PathTimeTable", $lookuptable_class); + my $lookuptable = "App::BorgRestore::PathTimeTable::$lookuptable_class"->new({db => $self->{db}}); $log->infof("Adding archive %s", $archive); + $self->{db}->begin_work; + $self->{db}->add_archive_name($archive); + my $archive_id = $self->{db}->get_archive_id($archive); + $lookuptable->set_archive_id($archive_id); $self->{borg}->list_archive($archive, sub { my $line = shift; @@ -461,10 +468,7 @@ method _handle_added_archives($borg_archives) { my $borg_time = Time::HiRes::gettimeofday; - $self->{db}->begin_work; - $self->{db}->add_archive_name($archive); - my $archive_id = $self->{db}->get_archive_id($archive); - $lookuptable->save_nodes($archive_id); + $lookuptable->save_nodes(); $self->{db}->commit; $self->{db}->vacuum; $self->{db}->verify_cache_fill_rate_ok(); -- cgit v1.2.3-24-g4f1b