diff options
Diffstat (limited to 'lib/App')
-rw-r--r-- | lib/App/BorgRestore.pm | 2 | ||||
-rw-r--r-- | lib/App/BorgRestore/DB.pm | 11 |
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;'); |