Skip to content

Commit dae240d

Browse files
authored
Add connet_timeout and idle_timeout to the user (#634)
* Add connect_timeout to the user * Allow user to override connect timeout * version * lock * Add both timeouts to the user
1 parent b52ea8e commit dae240d

File tree

6 files changed

+38
-6
lines changed

6 files changed

+38
-6
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pgcat"
3-
version = "1.1.2-dev1"
3+
version = "1.1.2-dev2"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

pgcat.toml

+2
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,8 @@ username = "other_user"
301301
password = "other_user"
302302
pool_size = 21
303303
statement_timeout = 15000
304+
connect_timeout = 1000
305+
idle_timeout = 1000
304306

305307
# Shard configs are structured as pool.<pool_name>.shards.<shard_id>
306308
# Each shard config contains a list of servers that make up the shard

src/auth_passthrough.rs

+2
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ impl AuthPassthrough {
7979
pool_mode: None,
8080
server_lifetime: None,
8181
min_pool_size: None,
82+
connect_timeout: None,
83+
idle_timeout: None,
8284
};
8385

8486
let user = &address.username;

src/config.rs

+22
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ pub struct User {
216216
pub server_lifetime: Option<u64>,
217217
#[serde(default)] // 0
218218
pub statement_timeout: u64,
219+
pub connect_timeout: Option<u64>,
220+
pub idle_timeout: Option<u64>,
219221
}
220222

221223
impl Default for User {
@@ -230,6 +232,8 @@ impl Default for User {
230232
statement_timeout: 0,
231233
pool_mode: None,
232234
server_lifetime: None,
235+
connect_timeout: None,
236+
idle_timeout: None,
233237
}
234238
}
235239
}
@@ -1307,6 +1311,24 @@ impl Config {
13071311
None => "default".to_string(),
13081312
}
13091313
);
1314+
info!(
1315+
"[pool: {}][user: {}] Connection timeout: {}",
1316+
pool_name,
1317+
user.1.username,
1318+
match user.1.connect_timeout {
1319+
Some(connect_timeout) => format!("{}ms", connect_timeout),
1320+
None => "not set".to_string(),
1321+
}
1322+
);
1323+
info!(
1324+
"[pool: {}][user: {}] Idle timeout: {}",
1325+
pool_name,
1326+
user.1.username,
1327+
match user.1.idle_timeout {
1328+
Some(idle_timeout) => format!("{}ms", idle_timeout),
1329+
None => "not set".to_string(),
1330+
}
1331+
);
13101332
}
13111333
}
13121334
}

src/pool.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -436,14 +436,20 @@ impl ConnectionPool {
436436
pool_config.prepared_statements_cache_size,
437437
);
438438

439-
let connect_timeout = match pool_config.connect_timeout {
439+
let connect_timeout = match user.connect_timeout {
440440
Some(connect_timeout) => connect_timeout,
441-
None => config.general.connect_timeout,
441+
None => match pool_config.connect_timeout {
442+
Some(connect_timeout) => connect_timeout,
443+
None => config.general.connect_timeout,
444+
},
442445
};
443446

444-
let idle_timeout = match pool_config.idle_timeout {
447+
let idle_timeout = match user.idle_timeout {
445448
Some(idle_timeout) => idle_timeout,
446-
None => config.general.idle_timeout,
449+
None => match pool_config.idle_timeout {
450+
Some(idle_timeout) => idle_timeout,
451+
None => config.general.idle_timeout,
452+
},
447453
};
448454

449455
let server_lifetime = match user.server_lifetime {

0 commit comments

Comments
 (0)