feat(connection): increase default query timeout
This commit is contained in:
parent
c720aeafd6
commit
0745fbc53c
|
|
@ -1,7 +1,7 @@
|
|||
import { splitSqlStatementRanges } from "@/lib/sql/sqlStatementRanges";
|
||||
import type { ConnectionConfig, DatabaseType } from "@/types/database";
|
||||
|
||||
export const DEFAULT_QUERY_TIMEOUT_SECS = 30;
|
||||
export const DEFAULT_QUERY_TIMEOUT_SECS = 60;
|
||||
|
||||
export function queryTimeoutSecsForConnection(connection?: Pick<ConnectionConfig, "query_timeout_secs"> | null): number {
|
||||
const value = Number(connection?.query_timeout_secs);
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ pub fn default_connect_timeout_secs() -> u64 {
|
|||
}
|
||||
|
||||
pub fn default_query_timeout_secs() -> u64 {
|
||||
30
|
||||
60
|
||||
}
|
||||
|
||||
pub fn default_idle_timeout_secs() -> u64 {
|
||||
|
|
@ -1880,6 +1880,11 @@ mod tests {
|
|||
};
|
||||
use std::str::FromStr;
|
||||
|
||||
#[test]
|
||||
fn default_query_timeout_is_sixty_seconds() {
|
||||
assert_eq!(default_query_timeout_secs(), 60);
|
||||
}
|
||||
|
||||
fn mysql_config(username: &str, password: &str, database: Option<&str>) -> ConnectionConfig {
|
||||
ConnectionConfig {
|
||||
id: "id".to_string(),
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ pub struct DbOperationBudget {
|
|||
|
||||
- `query_timeout_secs = 0`:表示 SQL 执行本身不设超时。前端不得静默将其变为有限值(如 60s)。现有代码已正确处理:前端 `withFrontendQueryTimeout` 在 `timeoutSecs === 0` 时直接返回 promise 不加超时;后端 `resolve_query_timeout` 在 `Some(0)` 时返回 `None`。
|
||||
- `query_timeout_secs > 0`:SQL 执行超时为用户配置值。前端兜底超时设为配置值的 2 倍,让后端先触发自己的超时,前端超时仅作为网络异常下的兜底。
|
||||
- `query_timeout_secs` 缺失或无效:使用默认值 30s(`DEFAULT_QUERY_TIMEOUT_SECS`)。
|
||||
- `query_timeout_secs` 缺失或无效:使用默认值 60s(`DEFAULT_QUERY_TIMEOUT_SECS`)。
|
||||
|
||||
**2. 基础设施超时 — 始终有硬性上限**
|
||||
|
||||
|
|
@ -468,4 +468,3 @@ Windows 环境验证:
|
|||
## 相关文档
|
||||
|
||||
- `docs/pips/plans/2026-06-24-database-connection-timeout-recovery.md`
|
||||
|
||||
|
|
@ -3,6 +3,7 @@ import { test } from "vitest";
|
|||
import { DEFAULT_QUERY_TIMEOUT_SECS, frontendQueryTimeoutSecsForSql, queryTimeoutSecsForConnection } from "../../apps/desktop/src/lib/sql/queryTimeout.ts";
|
||||
|
||||
test("queryTimeoutSecsForConnection falls back to the default timeout", () => {
|
||||
assert.equal(DEFAULT_QUERY_TIMEOUT_SECS, 60);
|
||||
assert.equal(queryTimeoutSecsForConnection(undefined), DEFAULT_QUERY_TIMEOUT_SECS);
|
||||
assert.equal(queryTimeoutSecsForConnection({ query_timeout_secs: -1 }), DEFAULT_QUERY_TIMEOUT_SECS);
|
||||
assert.equal(queryTimeoutSecsForConnection({ query_timeout_secs: 0 }), 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue