Question:
springboot 2.X多数据源配置,一段时间后连接无效,不能进行有效性验证,提示:
Connection marked as broken because of SQLSTATE(08S01), ErrorCode(0);
Communications link failure
开始以为是HikariCP连接池配置的有问题,后面发现是程序的问题,使用EntityManager查询操作,debug hikari也发现查询后连接无法释放
Solution:
使用@PersistenceContext?
- springboot data jpa中的entitymanager是transaction-scoped persistence contexts
- http://yukinami.github.io/2016/02/15/Spring%20Data%20JPA%20&%20EntityManager/
- https://stackoverflow.com/questions/10762974/should-jpa-entity-manager-be-closed
- validationTimeout,refer: https://github.com/brettwooldridge/HikariCP