Hikari关闭连接的时机
发布网友
发布时间:2023-07-17 10:00
我来回答
共1个回答
热心网友
时间:2024-11-17 22:39
hikari 关闭连接的前提是,连接当前处于空闲(STATE_IN_USE) 或者 被保留( STATE_RESERVED) 状态
HikariPool#closeConnection 直接关闭连接的逻辑
houseKeeper 和 maxLifetime 这类检测任务要关闭线程的时候,需要确保db连接空闲才行,调用的是 softEvictConnection 软驱除的方法
先把连接标记为 evict,如果连接此刻处于空闲状态 connectionBag.reserve(poolEntry) 才能执行成功将其状态变为 RESERVED 状态,进而 直接 closeConnection ;否则要等别的线程申请db连接时,再把 evict=true 的连接给关闭掉