re-create md5sum database on fatal error
authorDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Thu, 9 Feb 2012 19:53:14 +0000 (20:53 +0100)
committerDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Thu, 9 Feb 2012 19:53:14 +0000 (20:53 +0100)
lib/CloudStore/MD5sum.pm

index 8410ab1..e0da2b5 100644 (file)
@@ -28,8 +28,11 @@ sub md5sum {
        my $md5_path = "$dir/.md5";
 
        my $db = TokyoCabinet::HDB->new();
-       $db->open($md5_path, $db->OWRITER | $db->OCREAT)
-       or die "can't open $md5_path: ",$db->errmsg( $db->ecode );
+       if ( ! $db->open($md5_path, $db->OWRITER | $db->OCREAT) ) {
+               warn "FATAL ERROR: md5sum $md5_path: ",$db->errmsg( $db->ecode ),"\n";
+               rename $md5_path, $md5_path . 'bak' && warn "saved old file in $md5_path.bak and re-created database";
+               $db->open($md5_path, $db->OWRITER | $db->OCREAT);
+       }
 
        warn "open $md5_path";