clear destination and overrides cache on request failure. (#186)
This commit is contained in:
@@ -104,8 +104,9 @@ where
|
|||||||
debug!(?method, ?url, "Sending request");
|
debug!(?method, ?url, "Sending request");
|
||||||
match client.execute(request).await {
|
match client.execute(request).await {
|
||||||
| Ok(response) => handle_response::<T>(dest, actual, &method, &url, response).await,
|
| Ok(response) => handle_response::<T>(dest, actual, &method, &url, response).await,
|
||||||
| Err(error) =>
|
| Err(error) => Err(self
|
||||||
Err(handle_error(actual, &method, &url, error).expect_err("always returns error")),
|
.handle_error(dest, actual, &method, &url, error)
|
||||||
|
.expect_err("always returns error")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,7 +199,10 @@ async fn into_http_response(
|
|||||||
Ok(http_response)
|
Ok(http_response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[implement(super::Service)]
|
||||||
fn handle_error(
|
fn handle_error(
|
||||||
|
&self,
|
||||||
|
dest: &ServerName,
|
||||||
actual: &ActualDest,
|
actual: &ActualDest,
|
||||||
method: &Method,
|
method: &Method,
|
||||||
url: &Url,
|
url: &Url,
|
||||||
@@ -220,6 +224,9 @@ fn handle_error(
|
|||||||
debug_error!("{e:?}");
|
debug_error!("{e:?}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.services.resolver.cache.del_destination(dest);
|
||||||
|
self.services.resolver.cache.del_override(dest);
|
||||||
|
|
||||||
Err(e.into())
|
Err(e.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user