Mercurial > lbo > hg > leveldb-rs
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 {