changeset 567:77867ac45e79

Deliver better error when failing to parse file name
author Lewin Bormann <lbo@spheniscida.de>
date Fri, 08 Jul 2022 13:15:37 -0700
parents bc90b6a413d5
children bbcfbcd90d80
files src/db_impl.rs src/error.rs
diffstat 2 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/db_impl.rs	Fri Jul 08 13:04:30 2022 -0700
+++ b/src/db_impl.rs	Fri Jul 08 13:15:37 2022 -0700
@@ -186,13 +186,16 @@
         let mut log_files = vec![];
 
         for file in &filenames {
-            if let Ok((num, typ)) = parse_file_name(&file) {
+            match parse_file_name(&file) {
+                Ok((num, typ)) => {
                 expected.remove(&num);
                 if typ == FileType::Log
                     && (num >= self.vset.borrow().log_num || num == self.vset.borrow().prev_log_num)
                 {
                     log_files.push(num);
                 }
+                },
+                Err(e) => return Err(e.annotate(format!("While parsing {:?}", file)))
             }
         }
         if !expected.is_empty() {
--- a/src/error.rs	Fri Jul 08 13:04:30 2022 -0700
+++ b/src/error.rs	Fri Jul 08 13:15:37 2022 -0700
@@ -67,6 +67,9 @@
         }
         Status { code, err }
     }
+    pub fn annotate<S: AsRef<str>>(self, msg: S) -> Status {
+        Status { code: self.code, err: format!("{}: {}", msg.as_ref(), self.err) }
+    }
 }
 
 /// LevelDB's result type