Hikaricp计时器已经取消

时间:2016-04-11 13:54:42

标签: postgresql datasource connection-pooling hikaricp

我有一个使用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

有人可以说明为什么会出现这个问题,我该如何解决?

1 个答案:

答案 0 :(得分:0)

可能是因为您使用了opentracing。 只需从您的依赖项中删除opentracing。这是我为我找到的最好方法。