From ab3009e9ccafa132a75e7ad204fee3dd5f480f1a Mon Sep 17 00:00:00 2001 From: yukaidi Date: Fri, 29 May 2026 00:50:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ShutdownHook=20=E6=8E=A5=E5=85=A5=20JDBC?= =?UTF-8?q?PoolInit.close()=20=E5=92=8C=20JsParserExecutor.shutdownExecuto?= =?UTF-8?q?r()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将已实现但未调用的 close()/shutdownExecutor() 接入 JVM ShutdownHook,显式释放资源。 关闭顺序:vertx.close() → JDBC 连接池 → WorkerExecutor 线程池,确保依赖关系正确。 --- core/src/main/java/cn/qaiu/vx/core/Deploy.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/src/main/java/cn/qaiu/vx/core/Deploy.java b/core/src/main/java/cn/qaiu/vx/core/Deploy.java index 1645751..7543db1 100644 --- a/core/src/main/java/cn/qaiu/vx/core/Deploy.java +++ b/core/src/main/java/cn/qaiu/vx/core/Deploy.java @@ -147,6 +147,18 @@ public final class Deploy { } catch (Exception e) { LOGGER.warn("Vert.x close error or timeout", e); } + // 显式关闭 JDBC 连接池(vertx.close 不保证关闭 JDBCPoolInit 管理的 pool) + try { + cn.qaiu.db.pool.JDBCPoolInit.instance().close(); + } catch (Exception e) { + LOGGER.warn("JDBC pool close error", e); + } + // 显式关闭 JS 解析器 WorkerExecutor 线程池 + try { + cn.qaiu.parser.customjs.JsParserExecutor.shutdownExecutor(); + } catch (Exception e) { + LOGGER.warn("JsParserExecutor shutdown error", e); + } })); //配置保存在共享数据中 var sharedData = vertx.sharedData();