Resolve upgrade in place error with cbor to json (#1028)

This commit is contained in:
Firstyear 2022-09-09 12:17:01 +10:00 committed by William Brown
parent 985462590b
commit b20d531295

View file

@ -277,20 +277,25 @@ impl<'a> DbTxn<'a> {
return Err(()); return Err(());
} }
let r: Result<Option<(_, _)>, ()> = data if let Some((token, expiry)) = data.first() {
.first()
.map(|(token, expiry)| {
// token convert with json. // token convert with json.
let t = serde_json::from_slice(token.as_slice()).map_err(|e| { // If this errors, we specifically return Ok(None) because that triggers
error!("json error -> {:?}", e); // the cache to refetch the token.
})?; match serde_json::from_slice(token.as_slice()) {
Ok(t) => {
let e = u64::try_from(*expiry).map_err(|e| { let e = u64::try_from(*expiry).map_err(|e| {
error!("u64 convert error -> {:?}", e); error!("u64 convert error -> {:?}", e);
})?; })?;
Ok((t, e)) Ok(Some((t, e)))
}) }
.transpose(); Err(e) => {
r warn!("recoverable - json error -> {:?}", e);
Ok(None)
}
}
} else {
Ok(None)
}
} }
pub fn get_accounts(&self) -> Result<Vec<UnixUserToken>, ()> { pub fn get_accounts(&self) -> Result<Vec<UnixUserToken>, ()> {
@ -314,14 +319,18 @@ impl<'a> DbTxn<'a> {
let data = data?; let data = data?;
data.iter() Ok(data
.map(|token| { .iter()
// We filter map here so that anything invalid is skipped.
.filter_map(|token| {
// token convert with json. // token convert with json.
serde_json::from_slice(token.as_slice()).map_err(|e| { serde_json::from_slice(token.as_slice())
error!("get_accounts json error -> {:?}", e); .map_err(|e| {
warn!("get_accounts json error -> {:?}", e);
}) })
.ok()
}) })
.collect() .collect())
} }
pub fn update_account(&self, account: &UnixUserToken, expire: u64) -> Result<(), ()> { pub fn update_account(&self, account: &UnixUserToken, expire: u64) -> Result<(), ()> {
@ -572,20 +581,25 @@ impl<'a> DbTxn<'a> {
return Err(()); return Err(());
} }
let r: Result<Option<(_, _)>, ()> = data if let Some((token, expiry)) = data.first() {
.first()
.map(|(token, expiry)| {
// token convert with json. // token convert with json.
let t = serde_json::from_slice(token.as_slice()).map_err(|e| { // If this errors, we specifically return Ok(None) because that triggers
error!("json error -> {:?}", e); // the cache to refetch the token.
})?; match serde_json::from_slice(token.as_slice()) {
Ok(t) => {
let e = u64::try_from(*expiry).map_err(|e| { let e = u64::try_from(*expiry).map_err(|e| {
error!("u64 convert error -> {:?}", e); error!("u64 convert error -> {:?}", e);
})?; })?;
Ok((t, e)) Ok(Some((t, e)))
}) }
.transpose(); Err(e) => {
r warn!("recoverable - json error -> {:?}", e);
Ok(None)
}
}
} else {
Ok(None)
}
} }
pub fn get_group_members(&self, g_uuid: &str) -> Result<Vec<UnixUserToken>, ()> { pub fn get_group_members(&self, g_uuid: &str) -> Result<Vec<UnixUserToken>, ()> {
@ -643,15 +657,18 @@ impl<'a> DbTxn<'a> {
let data = data?; let data = data?;
data.iter() Ok(data
.map(|token| { .iter()
.filter_map(|token| {
// token convert with json. // token convert with json.
// debug!("{:?}", token); // debug!("{:?}", token);
serde_json::from_slice(token.as_slice()).map_err(|e| { serde_json::from_slice(token.as_slice())
.map_err(|e| {
error!("json error -> {:?}", e); error!("json error -> {:?}", e);
}) })
.ok()
}) })
.collect() .collect())
} }
pub fn update_group(&self, grp: &UnixGroupToken, expire: u64) -> Result<(), ()> { pub fn update_group(&self, grp: &UnixGroupToken, expire: u64) -> Result<(), ()> {