Receiving a Hikari Leak Detection using springs AbstractRoutingDataSource

651 views
Skip to first unread message

Warren Goldman

unread,
Nov 9, 2016, 2:58:24 PM11/9/16
to HikariCP
The routing data source has multiple data sources configured to it. The exception below happens once in awhile, and actually somewhat infrequently (even though this call is made numerous times).

We are configuring HikariDataSource's for the AbstractRoutingDataSource.targetDataSources. The AbstractRoutingDataSource implementation is passed as a dataSource to org.springframework.orm.hibernate4.LocalSessionFactoryBean.

The below is triggered by a call to begin a transaction that was created via sessionFactory.getSession().getTransaction().begin() <-- somewhat pseudocode...

 com.zaxxer.hikari.proxy.LeakTask - Connection leak detection triggered, stack trace follows
java.lang.Exception
        at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:164)
        at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
        at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
        at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
        at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171)
        at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
        at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162)

Brett Wooldridge

unread,
Nov 9, 2016, 5:31:38 PM11/9/16
to HikariCP
What version of HikariCP? What is the leakDetectionThreshold set to?

-Brett

Warren Goldman

unread,
Nov 10, 2016, 8:54:52 AM11/10/16
to HikariCP
2.4.1

<property name="leakDetectionThreshold"    value="60000"/>

Brett Wooldridge

unread,
Nov 10, 2016, 9:38:14 AM11/10/16
to hika...@googlegroups.com
If you upgrade to HikariCP 2.5.1 there is a new log that appears if a connection is "unleaked", i.e. it is eventually returned to the pool.  This can help you distinguish between a true leak and a transient spike in cpu/network/database load that pushes a query over the reporting threshold.

-Brett

Reply all
Reply to author
Forward
0 new messages