changeset 302:a82f7228192c

env*: Make unlock() return a Result.
author Lewin Bormann <lbo@spheniscida.de>
date Wed, 27 Sep 2017 05:51:10 +0000
parents eea316cf8f50
children 26f7cbdfe6c6
files src/disk_env.rs src/env.rs src/mem_env.rs
diffstat 3 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/disk_env.rs	Wed Sep 27 05:29:43 2017 +0000
+++ b/src/disk_env.rs	Wed Sep 27 05:51:10 2017 +0000
@@ -1,6 +1,6 @@
 use env::{Env, FileLock, Logger, RandomAccess};
 use env_common::{micros, sleep_for};
-use error::{Status, StatusCode, Result};
+use error::{err, Status, StatusCode, Result};
 
 use std::collections::HashMap;
 use std::fs;
@@ -124,11 +124,11 @@
             Ok(lock)
         }
     }
-    fn unlock(&self, l: FileLock) {
+    fn unlock(&self, l: FileLock) -> Result<()> {
         let mut locks = self.locks.lock().unwrap();
 
         if !locks.contains_key(&l.id) {
-            panic!("Unlocking a file that is not locked!");
+            return err(StatusCode::LockError, "unlocking a file that is not locked!");
         } else {
             let fd = locks.remove(&l.id).unwrap();
             let flock_arg = libc::flock {
@@ -144,10 +144,9 @@
                             mem::transmute::<&libc::flock, *const libc::flock>(&&flock_arg))
             };
             if result < 0 {
-                // ignore for now
+                return err(StatusCode::LockError, "unlock failed");
             }
-
-            ()
+            Ok(())
         }
     }
 
--- a/src/env.rs	Wed Sep 27 05:29:43 2017 +0000
+++ b/src/env.rs	Wed Sep 27 05:51:10 2017 +0000
@@ -38,7 +38,7 @@
     fn rename(&self, &Path, &Path) -> Result<()>;
 
     fn lock(&self, &Path) -> Result<FileLock>;
-    fn unlock(&self, l: FileLock);
+    fn unlock(&self, l: FileLock) -> Result<()>;
 
     fn new_logger(&self, &Path) -> Result<Logger>;
 
--- a/src/mem_env.rs	Wed Sep 27 05:29:43 2017 +0000
+++ b/src/mem_env.rs	Wed Sep 27 05:51:10 2017 +0000
@@ -304,8 +304,8 @@
     fn lock(&self, p: &Path) -> Result<FileLock> {
         self.0.lock_(p)
     }
-    fn unlock(&self, p: FileLock) {
-        self.0.unlock_(p).expect("memfs unlock failed!");
+    fn unlock(&self, p: FileLock) -> Result<()> {
+        self.0.unlock_(p)
     }
 
     fn micros(&self) -> u64 {