@@ -13,6 +13,7 @@ use OpenQA::Downloader;
1313use Mojo::File ' path' ;
1414use Mojo::Util ' scope_guard' ;
1515use Time::HiRes qw( gettimeofday) ;
16+ use Feature::Compat::Try;
1617
1718# Only consider files larger than 250 MB for metrics (rates for smaller files are unrealistic)
1819use constant METRICS_DOWNLOAD_SIZE => $ENV {OPENQA_METRICS_DOWNLOAD_SIZE } // 262144000;
@@ -46,14 +47,14 @@ sub repair_database ($self, $db_file = $self->_locate_db_file) {
4647 # perform integrity check and test migration; try to provoke an error
4748 my $log = $self -> log ;
4849 $log -> debug(" Testing sqlite database ($db_file )" );
49- eval {
50+ try {
5051 die " database integrity check failed\n " if $self -> _check_database_integrity;
5152 $self -> sqlite-> migrations-> migrate;
52- };
53+ }
5354
5455 # remove broken database
55- if ( my $err = $@ ) {
56- $log -> error(" Database has been corrupted: $err " );
56+ catch ( $e ) {
57+ $log -> error(" Database has been corrupted: $e " );
5758 $log -> error(' Killing processes accessing the database file handles and removing database' );
5859 $self -> _kill_db_accessing_processes(" '$db_file '*" );
5960 }
@@ -158,15 +159,15 @@ sub asset ($self, $asset) {
158159}
159160
160161sub track_asset ($self , $asset ) {
161- eval {
162+ try {
162163 my $db = $self -> sqlite-> db;
163164 my $tx = $db -> begin(' exclusive' );
164165 my $sql = " INSERT INTO assets (filename, size, last_use) VALUES (?, 0, strftime('%s ','now'))"
165166 . ' ON CONFLICT (filename) DO UPDATE SET pending=1' ;
166167 $db -> query($sql , $asset );
167168 $tx -> commit;
168- };
169- if ( my $err = $@ ) { $self -> log -> error(" Tracking asset failed: $err " ) }
169+ }
170+ catch ( $e ) { $self -> log -> error(" Tracking asset failed: $e " ) }
170171}
171172
172173sub metrics ($self ) {
@@ -287,7 +288,7 @@ sub _check_limits ($self, $needed, $to_preserve = undef) {
287288 my $limit_size = human_readable_size($limit );
288289 $log -> info(
289290 " Cache size $cache_size + needed $needed_size exceeds limit of $limit_size , purging least used assets" );
290- eval {
291+ try {
291292 my $results
292293 = $self -> sqlite-> db-> select(' assets' , [qw( filename size last_use) ], {pending => ' 0' },
293294 {-asc => ' last_use' });
@@ -300,22 +301,22 @@ sub _check_limits ($self, $needed, $to_preserve = undef) {
300301 $self -> _decrease($asset_size ) if $self -> purge_asset($filename );
301302 last if !$self -> _exceeds_limit($needed );
302303 }
303- };
304- if ( my $err = $@ ) { $log -> error(" Checking cache limit failed: $err " ) }
304+ }
305+ catch ( $e ) { $log -> error(" Checking cache limit failed: $e " ) }
305306 }
306307}
307308
308309sub _delete_pending_assets ($self ) {
309310 my $log = $self -> log ;
310- eval {
311+ try {
311312 my $results = $self -> sqlite-> db-> select(' assets' , [qw( filename pending) ], {pending => ' 1' });
312313 for my $asset ($results -> hashes-> each ) {
313314 my $filename = $asset -> {filename };
314315 $log -> info(qq{ Purging "$filename " because it appears pending after service startup} );
315316 $self -> purge_asset($filename );
316317 }
317- };
318- if ( my $err = $@ ) { $log -> error(" Checking for pending leftovers failed: $err " ) }
318+ }
319+ catch ( $e ) { $log -> error(" Checking for pending leftovers failed: $e " ) }
319320}
320321
3213221;
0 commit comments