From 4207a891d193d53d76b18632fb4f82b28ca8cc81 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Wed, 27 May 2026 18:00:50 +0800 Subject: [PATCH] fix: properly disconnect agent-based database connections PoolKind::Agent had a no-op disconnect handler, which meant closing connections for agent-driven databases (KingbaseES, Oracle, Dameng, etc.) never actually sent a disconnect command to the Java agent process. The JDBC connection was only released when the process was eventually killed via Drop, which could leave stale sessions alive on reconnect. --- src-tauri/src/commands/connection.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/commands/connection.rs b/src-tauri/src/commands/connection.rs index 7b916a552..a96e070c1 100644 --- a/src-tauri/src/commands/connection.rs +++ b/src-tauri/src/commands/connection.rs @@ -482,7 +482,10 @@ pub async fn disconnect_db(state: State<'_, Arc>, connection_id: Strin PoolKind::ClickHouse(_) => {} PoolKind::SqlServer(_) => {} PoolKind::Elasticsearch(_) => {} - PoolKind::Agent(_) => {} + PoolKind::Agent(client) => { + let mut client = client.lock().await; + let _ = client.disconnect().await; + } PoolKind::ExternalTabular(_) => {} PoolKind::ExternalDriver { .. } => {} }