summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/App/BorgRestore.pm2
-rw-r--r--lib/App/BorgRestore/DB.pm11
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/App/BorgRestore.pm b/lib/App/BorgRestore.pm
index c3b37fd..964ea48 100644
--- a/lib/App/BorgRestore.pm
+++ b/lib/App/BorgRestore.pm
@@ -532,6 +532,8 @@ method update_cache() {
my $borg_archives = $self->{borg}->borg_list();
+ # write operations benefit from the large cache so set the cache size here
+ $self->{db}->set_cache_size();
$self->_handle_removed_archives($borg_archives);
$self->_handle_added_archives($borg_archives);
diff --git a/lib/App/BorgRestore/DB.pm b/lib/App/BorgRestore/DB.pm
index 1f1427e..177df27 100644
--- a/lib/App/BorgRestore/DB.pm
+++ b/lib/App/BorgRestore/DB.pm
@@ -32,23 +32,26 @@ method new($class: $db_path, $cache_size) {
# ensure the cache directory exists
path($db_path)->parent->mkpath({mode => oct(700)});
- my $db = $self->_open_db($db_path, $cache_size);
+ my $db = $self->_open_db($db_path);
$self->initialize_db();
} else {
- $self->_open_db($db_path, $cache_size);
+ $self->_open_db($db_path);
}
$self->{cache_size} = $cache_size;
return $self;
}
-method _open_db($dbfile, $cache_size) {
+method _open_db($dbfile) {
$log->debugf("Opening database at %s", $dbfile);
$self->{dbh} = DBI->connect("dbi:SQLite:dbname=$dbfile","","", {RaiseError => 1, Taint => 1});
- $self->{dbh}->do("PRAGMA cache_size=-".$cache_size);
$self->{dbh}->do("PRAGMA strict=ON");
}
+method set_cache_size() {
+ $self->{dbh}->do("PRAGMA cache_size=-".$self->{cache_size});
+}
+
method initialize_db() {
$log->debug("Creating initial database");
$self->{dbh}->do('create table `files` (`path` text, primary key (`path`)) without rowid;');