This is an automated email from the ASF dual-hosted git repository.

suyanhanx pushed a commit to branch rocksdb-error-handle
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git

commit 8487ab8d27c115565105ba6acc206bc40eb6509d
Author: suyanhanx <[email protected]>
AuthorDate: Wed Jan 3 17:20:34 2024 +0800

    refactor(services/rocksdb): Impl parse_error instead of From<Error>
    
    Signed-off-by: suyanhanx <[email protected]>
---
 core/src/services/rocksdb/backend.rs | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/core/src/services/rocksdb/backend.rs 
b/core/src/services/rocksdb/backend.rs
index b60d4350d5..bb25f6c022 100644
--- a/core/src/services/rocksdb/backend.rs
+++ b/core/src/services/rocksdb/backend.rs
@@ -135,7 +135,7 @@ impl kv::Adapter for Adapter {
     }
 
     fn blocking_get(&self, path: &str) -> Result<Option<Vec<u8>>> {
-        Ok(self.db.get(path)?)
+        Ok(self.db.get(path).map_err(parse_rocksdb_error)?)
     }
 
     async fn set(&self, path: &str, value: &[u8]) -> Result<()> {
@@ -149,7 +149,7 @@ impl kv::Adapter for Adapter {
     }
 
     fn blocking_set(&self, path: &str, value: &[u8]) -> Result<()> {
-        Ok(self.db.put(path, value)?)
+        Ok(self.db.put(path, value).map_err(parse_rocksdb_error)?)
     }
 
     async fn delete(&self, path: &str) -> Result<()> {
@@ -162,7 +162,7 @@ impl kv::Adapter for Adapter {
     }
 
     fn blocking_delete(&self, path: &str) -> Result<()> {
-        Ok(self.db.delete(path)?)
+        Ok(self.db.delete(path).map_err(parse_rocksdb_error)?)
     }
 
     async fn scan(&self, path: &str) -> Result<Vec<String>> {
@@ -180,7 +180,7 @@ impl kv::Adapter for Adapter {
         let mut res = Vec::default();
 
         for key in it {
-            let key = key?;
+            let key = key.map_err(parse_rocksdb_error)?;
             let key = String::from_utf8_lossy(&key);
             // FIXME: it's must a bug that rocksdb returns key that not start 
with path.
             if !key.starts_with(path) {
@@ -197,8 +197,6 @@ impl kv::Adapter for Adapter {
     }
 }
 
-impl From<rocksdb::Error> for Error {
-    fn from(e: rocksdb::Error) -> Self {
-        Error::new(ErrorKind::Unexpected, "got rocksdb error").set_source(e)
-    }
+fn parse_rocksdb_error(e: rocksdb::Error) -> Error {
+    Error::new(ErrorKind::Unexpected, "got rocksdb error").set_source(e)
 }

Reply via email to