add 3 tries
This commit is contained in:
parent
54107a390b
commit
f68964f63d
@ -1119,8 +1119,7 @@ impl Web3ProxyApp {
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
/// proxy request with up to 3 tries.
|
||||||
// TODO: is this a good return type? i think the status code should be one level higher
|
|
||||||
async fn proxy_request(
|
async fn proxy_request(
|
||||||
self: &Arc<Self>,
|
self: &Arc<Self>,
|
||||||
request: JsonRpcRequest,
|
request: JsonRpcRequest,
|
||||||
@ -1137,7 +1136,13 @@ impl Web3ProxyApp {
|
|||||||
|
|
||||||
let response_id = request.id;
|
let response_id = request.id;
|
||||||
|
|
||||||
let (code, response_data) = match self
|
let mut tries = 3;
|
||||||
|
let mut code;
|
||||||
|
let mut response;
|
||||||
|
while tries > 0 {
|
||||||
|
// TODO: make sure this doesn't retry jsonrpc errors
|
||||||
|
let response_data;
|
||||||
|
(code, response_data) = match self
|
||||||
._proxy_request_with_caching(
|
._proxy_request_with_caching(
|
||||||
&request.method,
|
&request.method,
|
||||||
request.params,
|
request.params,
|
||||||
@ -1150,7 +1155,19 @@ impl Web3ProxyApp {
|
|||||||
Err(err) => err.as_response_parts(),
|
Err(err) => err.as_response_parts(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let response = JsonRpcForwardedResponse::from_response_data(response_data, response_id);
|
response = JsonRpcForwardedResponse::from_response_data(response_data, response_id);
|
||||||
|
|
||||||
|
if code == StatusCode::OK {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: emit a stat?
|
||||||
|
// TODO: only log params in development
|
||||||
|
warn!(method=%request.method, params=?request.params, ?response, "request failed");
|
||||||
|
tries -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let response = response.expect("we definitely looped at least once");
|
||||||
|
|
||||||
// TODO: this serializes twice :/
|
// TODO: this serializes twice :/
|
||||||
request_metadata.add_response(ResponseOrBytes::Response(&response));
|
request_metadata.add_response(ResponseOrBytes::Response(&response));
|
||||||
|
Loading…
Reference in New Issue
Block a user