wciąż otrzymuję ten wyjątek w moim dzienniku Tomcat:C3P0 pozornego impasu wyjątek
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
[email protected]24
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)
Używam Hibernacja 3.6.2 i C3P0 0.9.1.2 z MySQL. Po kilku godzinach przeszukiwania Google ten wyjątek APPARENT DEADLOCK wydaje się zwykle kojarzony z przygotowanym buforowaniem instrukcji. To jest moja konfiguracja C3P0 w moim 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>
nie robię żadnych buforowanie oświadczenie ogóle. Wszelkie sugestie dotyczące tego, co tu jest nie tak, byłyby bardzo mile widziane.
Wygląda na to, że uaktualnienie mojego C3P0 do wersji 0.9.2.1! Dzięki @SteveWaldman za wskazówkę. – corderazo00
Wygląda na to, że to nie wystarczyło, APPARENT DEADLOCK powraca ... Czy istnieje sposób na monitorowanie działań c3p0 bliżej lub na niższym poziomie, aby zobaczyć, dlaczego dokładnie zwisa podczas próby zdobycia połączenia? – corderazo00
Czy usunięcie pamięci podręcznej serwera WWW (tomcat/work/Catalina) może mieć coś wspólnego z tym? Znalazłem wątki, w których ludzie twierdzą, że to rozwiązało ich problemy. – corderazo00