我有一个使用Hikaricp创建数据源并连接到数据库的应用程序。我使用了以下默认的Hikaricp。
#Default properties for HikariCp
hikari.maximumPoolSize=100
hikari.maxLifetime=3600000
hikari.minimumIdle=1
hikari.connectionTimeout=1800000
hikari.testQuery=SELECT 1
当有连接请求时,将使用数据库详细信息创建数据源。创建数据源后,其引用将被缓存并用于后续数据库交互(因为不需要一次又一次地创建数据源)。
通常我没有遇到任何问题。但是,有时面对这个计时器已经取消了问题。在这种情况下,数据库是postgresql。以下是stacktrace。
Caused by: java.lang.IllegalStateException: Timer already cancelled.
at java.util.Timer.sched(Timer.java:397)
at java.util.Timer.schedule(Timer.java:193)
at org.postgresql.jdbc2.AbstractJdbc2Connection.addTimerTask(AbstractJdbc2Connection.java:1357)
at org.postgresql.jdbc2.AbstractJdbc2Statement.startTimer(AbstractJdbc2Statement.java:3478)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:615)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:332)
at com.zaxxer.hikari.pool.HikariPool.isConnectionAlive(HikariPool.java:132)
at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:208)
at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:183)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:133)
at com.mycompany.efwd.jdbc.DataSourceConnectionProvider.a(SourceFile:84)
at com.mycompany.efwd.jdbc.DataSourceConnectionProvider.b(SourceFile:65)
... 99 more
有人可以说明为什么会出现这个问题,我该如何解决?
答案 0 :(得分:0)
可能是因为您使用了opentracing。 只需从您的依赖项中删除opentracing。这是我为我找到的最好方法。