]> git.proxmox.com Git - proxmox-backup.git/commitdiff
garbage collect: improve index error messages
authorDominik Csapak <d.csapak@proxmox.com>
Mon, 2 Nov 2020 11:34:35 +0000 (12:34 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 2 Nov 2020 19:08:50 +0000 (20:08 +0100)
so that in case of a broken index file, the user knows which it is

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/backup/datastore.rs

index 94d0cc04f05b26352ec56f1e0e9434abf7af918e..36ff32c875752ef64d24340608408c1aa4afab33 100644 (file)
@@ -475,10 +475,22 @@ impl DataStore {
                 Ok(file) => {
                     if let Ok(archive_type) = archive_type(&path) {
                         if archive_type == ArchiveType::FixedIndex {
-                            let index = FixedIndexReader::new(file)?;
+                            let index = FixedIndexReader::new(file).map_err(|err| {
+                                    format_err!(
+                                        "cannot read fixed index {}: {}",
+                                        full_path.to_string_lossy(),
+                                        err
+                                    )
+                            })?;
                             self.index_mark_used_chunks(index, &path, status, worker)?;
                         } else if archive_type == ArchiveType::DynamicIndex {
-                            let index = DynamicIndexReader::new(file)?;
+                            let index = DynamicIndexReader::new(file).map_err(|err| {
+                                    format_err!(
+                                        "cannot read dynamic index {}: {}",
+                                        full_path.to_string_lossy(),
+                                        err
+                                    )
+                            })?;
                             self.index_mark_used_chunks(index, &path, status, worker)?;
                         }
                     }
@@ -487,7 +499,11 @@ impl DataStore {
                     if err.kind() == std::io::ErrorKind::NotFound {
                         // simply ignore vanished files
                     } else {
-                        return Err(err.into());
+                        return Err(format_err!(
+                            "cannot open index {}: {}",
+                            full_path.to_string_lossy(),
+                            err
+                        ));
                     }
                 }
             }