Hikari关闭连接的时机

hikari 关闭连接的前提是,连接当前处于空闲(STATE_IN_USE) 或者 被保留( STATE_RESERVED) 状态

HikariPool#closeConnection 直接关闭连接的逻辑

houseKeeper 和 maxLifetime 这类检测任务要关闭线程的时候,需要确保db连接空闲才行,调用的是 softEvictConnection 软驱除的方法

先把连接标记为 evict,如果连接此刻处于空闲状态 connectionBag.reserve(poolEntry) 才能执行成功将其状态变为 RESERVED 状态,进而 直接 closeConnection ;否则要等别的线程申请db连接时,再把 evict=true 的连接给关闭掉