я получаю это исключение в моем журнале Tomcat:C3P0 ПОЛНАЯ ТУПИК исключение
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com[email protected]76b28200 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com[email protected]76b28200 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
[email protected]18 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
[email protected]e4 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
[email protected]d8 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
Pending Tasks:
[email protected]53
com.mchange.v2.resourcepool.BasicResourcePool$Ac[email protected]
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Я использую Hibernate 3.6.2 и C3P0 0.9.1.2 с MySQL. После нескольких часов поиска Google это исключение APPARENT DEADLOCK, похоже, обычно связано с подготовленным кэшированием инструкций. Это моя конфигурация C3P0 в моем hibernate.cfg.xml:
<propertyname="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">60</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.max_statements">0</property>
Я не делаю никакого кэширования заявления вообще. Любые намеки на то, что здесь неправильно, будут очень признательны.
Кажется, модернизация моего c3p0 до версии 0.9.2.1 сделала трюк! Спасибо @SteveWaldman за подсказку. – corderazo00
Видимо, он не сделал трюк, APPARENT DEADLOCK вернулся ... Есть ли способ контролировать действия c3p0 ближе или на более низком уровне, чтобы понять, почему именно он висит при попытке подключиться? – corderazo00
Может ли удаление кеша веб-сервера (tomcat/work/Catalina) иметь отношение к этому? Я нашел некоторые темы, в которых люди утверждают, что они решили свои проблемы. – corderazo00