jBPM 6.5 + Spring + Hikari DS - Connection Leak Detected

473 views
Skip to first unread message

Lorenzo Ciaravola

unread,
Aug 18, 2017, 11:05:43 AM8/18/17
to jBPM Usage

Hi,


We are using JBPM 6.5.0 embedded in a Spring Framework, and used either the ComboPooledDataSource or Hikari datasource. However, as per the logs attached, we have identified connection leaks if Hikari DS is used, or apparent Deadlocks if ComboPooledDataSource is used, resulting in our application getting crashed daily. 


Could you please take a look at the logs and suggest what might be the problem? Thanks a lot.


When using Hikari datasource:


2017-08-18 11:20:47,790 DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool-1 - Pool stats (total=30, active=1, idle=29, waiting=0) 

2017-08-18 11:20:48,538 WARN  [com.zaxxer.hikari.pool.ProxyLeakTask] Connection leak detection triggered for ConnectionID:1 ClientConnectionId: d849c8ad-a213-44d5-a10a-e358d67e91ab, stack trace follows 

java.lang.Exception: Apparent connection leak detected

at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)

at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:386)

at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:87)

at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:112)

at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:230)

at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:237)

at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:214)

at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:52)

at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1512)

at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:45)

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:189)

at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:380)

at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)

at org.kie.spring.persistence.KieSpringTransactionManager.begin(KieSpringTransactionManager.java:53)

at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:187)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:143)

at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:111)

at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:39)

at org.kie.internal.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:144)

at org.jbpm.runtime.manager.impl.factory.JPASessionFactory.findKieSessionById(JPASessionFactory.java:53)

at org.jbpm.runtime.manager.impl.SingletonRuntimeManager.init(SingletonRuntimeManager.java:89)

at org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl.newSingletonRuntimeManager(RuntimeManagerFactoryImpl.java:64)

at org.kie.spring.factorybeans.RuntimeManagerFactoryBean.getObject(RuntimeManagerFactoryBean.java:74)




When using ComboPooledDataSource:


2017-08-14 22:10:13,894 WARN  [com.mchange.v2.async.ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4c833ca4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

2017-08-14 22:10:13,900 WARN  [com.mchange.v2.async.ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4c833ca4 -- APPARENT DEADLOCK!!! Complete Status:

…….

2017-08-15 11:54:51,104 WARN  [com.mchange.v2.resourcepool.BasicResourcePool] com.mchange.v2.resourcepool.BasicResourcePool@647c693f -- an attempt to checkout a resource was interrupted, and the pool is still live: some other thread must have interrupted the Thread attempting checkout!

java.lang.InterruptedException: null

……

2017-08-15 11:54:51,111 INFO  [com.mchange.v2.resourcepool.BasicResourcePool] com.mchange.v2.resourcepool.BasicResourcePool@647c693f -- an attempt to checkout a resource was interrupted, because the pool is now closed. [Thread: http-nio-8080-exec-6]

2017-08-15 11:54:51,119 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] SQL Error: 0, SQLState: null

….

2017-08-15 11:54:51,119 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] An SQLException was provoked by the following failure: java.lang.InterruptedException

….

2017-08-15 11:54:51,189 ERROR [org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler] Unexpected error occurred in scheduled task.

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection


Jay Shah

unread,
Oct 4, 2017, 2:46:06 AM10/4/17
to jBPM Usage
We are facing the same issue any fix that you could find.

Lorenzo Ciaravola

unread,
May 25, 2018, 10:10:01 AM5/25/18
to jBPM Usage
No, unfortunately. Have you found any fix?

Jagadeesh Sadashiv

unread,
Nov 28, 2018, 10:35:41 PM11/28/18
to jBPM Usage
Did you guys found any solution for that ?

Lorenzo

unread,
Nov 29, 2018, 12:26:44 AM11/29/18
to Jagadeesh Sadashiv, jBPM Usage
Negative. We ended up moving away from Hikari and embedded jBPM and instead deployed jBPM in JBoss as an engine, and used the default JBoss pooling mechanism. 

Sent from my iPhone
--
You received this message because you are subscribed to a topic in the Google Groups "jBPM Usage" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jbpm-usage/2ufT8ERE_60/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/2958b410-de05-4524-a5e9-eb256d77d4fc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Jagadeesh H Sadashiv

unread,
Nov 29, 2018, 1:13:06 AM11/29/18
to Lorenzo, jBPM Usage
Thank you for taking time and replying to this thread. 

Sent from my iPhone
Reply all
Reply to author
Forward
0 new messages