Description
Summary
After upgrading (or installing) Crucible 4.5.1 and running it for some time, Crucible becomes not responsive and a restart is required.
This is caused by the unavailability of database connections in the pool.
Expected Results
Crucible is always responsive.
Actual Results
There are no errors in the logs, the logs only contain references to repository indexes without any obvious slow down.
Thread dumps will show a significant amount of thread waiting to get a connection from the pool:
"qtp1663844181-121926" #121926 prio=5 os_prio=0 tid=0x00007fcce8135000 nid=0x146b waiting on condition [0x00007fcc795fd000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000646b6d418> (a com.jolbox.bonecp.BoundedLinkedTransferQueue) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at jsr166y.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:691) at jsr166y.LinkedTransferQueue.xfer(LinkedTransferQueue.java:600) at jsr166y.LinkedTransferQueue.poll(LinkedTransferQueue.java:1068) at com.jolbox.bonecp.BoundedLinkedTransferQueue.poll(BoundedLinkedTransferQueue.java:78) at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:500) at com.cenqua.crucible.hibernate.trackingstatements.HibernateBonceCPConnectionProvider.getConnection(HibernateBonceCPConnectionProvider.java:171) at com.cenqua.crucible.hibernate.trackingstatements.TrackingStatementsConnectionProvider.getConnection(TrackingStatementsConnectionProvider.java:26) at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:301) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1351) at com.cenqua.crucible.hibernate.SessionState.beginTx(SessionState.java:60) at com.cenqua.crucible.hibernate.HibernateUtil.beginTransaction(HibernateUtil.java:372)
Workaround
Not available