fix(query): avoid retrying local query timeouts
This commit is contained in:
parent
8eb5f22069
commit
08fb5bbf4d
|
|
@ -572,6 +572,9 @@ pub fn agent_close_query_session_params(session_id: &str) -> serde_json::Value {
|
|||
|
||||
pub fn is_connection_error(err: &str) -> bool {
|
||||
let lower = err.to_lowercase();
|
||||
if is_dbx_query_timeout_error(&lower) {
|
||||
return false;
|
||||
}
|
||||
lower.contains("connection")
|
||||
|| lower.contains("broken pipe")
|
||||
|| lower.contains("reset by peer")
|
||||
|
|
@ -588,6 +591,10 @@ pub fn is_connection_error(err: &str) -> bool {
|
|||
|| is_os_connection_error(&lower)
|
||||
}
|
||||
|
||||
fn is_dbx_query_timeout_error(lower: &str) -> bool {
|
||||
lower.starts_with("query timed out after ")
|
||||
}
|
||||
|
||||
fn is_os_connection_error(lower: &str) -> bool {
|
||||
let os_error_codes = ["10053", "10054", "10057", "10058", "10060", "10061"];
|
||||
if let Some(pos) = lower.find("os error ") {
|
||||
|
|
@ -1823,6 +1830,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn is_connection_error_rejects_non_connection_errors() {
|
||||
assert!(!is_connection_error("Query timed out after 30 seconds"));
|
||||
assert!(!is_connection_error("ORA-00942: table or view does not exist"));
|
||||
assert!(!is_connection_error("syntax error at position 5"));
|
||||
assert!(!is_connection_error("os error 13"));
|
||||
|
|
|
|||
Loading…
Reference in New Issue