Skip to content

Commit 5bf9d57

Browse files
committed
f Make returned errors more verbose
1 parent 2c2ae96 commit 5bf9d57

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/io/sqlite_store.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,15 @@ impl KVStore for SqliteStore {
7878
},
7979
|row| row.get(0),
8080
)
81-
.map_err(|_| {
82-
let msg = format!("Failed to read from key: {}/{}", namespace, key);
83-
std::io::Error::new(std::io::ErrorKind::NotFound, msg)
81+
.map_err(|e| match e {
82+
rusqlite::Error::QueryReturnedNoRows => {
83+
let msg = format!("Failed namespace/key not found: {}/{}", namespace, key);
84+
std::io::Error::new(std::io::ErrorKind::NotFound, msg)
85+
}
86+
e => {
87+
let msg = format!("Failed to read from key {}/{}: {}", namespace, key, e);
88+
std::io::Error::new(std::io::ErrorKind::Other, msg)
89+
}
8490
})?;
8591
Ok(Cursor::new(res))
8692
}
@@ -102,8 +108,8 @@ impl KVStore for SqliteStore {
102108
":value": buf,
103109
},
104110
)
105-
.map_err(|_| {
106-
let msg = format!("Failed to write to key: {}/{}", namespace, key);
111+
.map_err(|e| {
112+
let msg = format!("Failed to write to key {}/{}: {}", namespace, key, e);
107113
std::io::Error::new(std::io::ErrorKind::Other, msg)
108114
})?;
109115
Ok(())
@@ -122,8 +128,8 @@ impl KVStore for SqliteStore {
122128
":key": key,
123129
},
124130
)
125-
.map_err(|_| {
126-
let msg = format!("Failed to delete key: {}/{}", namespace, key);
131+
.map_err(|e| {
132+
let msg = format!("Failed to delete key {}/{}: {}", namespace, key, e);
127133
std::io::Error::new(std::io::ErrorKind::Other, msg)
128134
})?;
129135

@@ -136,21 +142,24 @@ impl KVStore for SqliteStore {
136142
let locked_conn = self.connection.lock().unwrap();
137143

138144
let sql = format!("SELECT key FROM {} WHERE namespace=:namespace", KV_TABLE_NAME);
139-
let mut stmt = locked_conn.prepare(&sql).map_err(|_| {
140-
std::io::Error::new(std::io::ErrorKind::Other, "Failed to prepare statement")
145+
let mut stmt = locked_conn.prepare(&sql).map_err(|e| {
146+
let msg = format!("Failed to prepare statement: {}", e);
147+
std::io::Error::new(std::io::ErrorKind::Other, msg)
141148
})?;
142149

143150
let mut keys = Vec::new();
144151

145152
let rows_iter = stmt
146153
.query_map(named_params! {":namespace": namespace, }, |row| row.get(0))
147-
.map_err(|_| {
148-
std::io::Error::new(std::io::ErrorKind::Other, "Failed to retrieve queried rows")
154+
.map_err(|e| {
155+
let msg = format!("Failed to retrieve queried rows: {}", e);
156+
std::io::Error::new(std::io::ErrorKind::Other, msg)
149157
})?;
150158

151159
for k in rows_iter {
152-
keys.push(k.map_err(|_| {
153-
std::io::Error::new(std::io::ErrorKind::Other, "Failed to retrieve queried rows")
160+
keys.push(k.map_err(|e| {
161+
let msg = format!("Failed to retrieve queried rows: {}", e);
162+
std::io::Error::new(std::io::ErrorKind::Other, msg)
154163
})?);
155164
}
156165

0 commit comments

Comments
 (0)