-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: C3P0 settings for hibernate - Deadlocks
PostPosted: Sat Jan 24, 2009 8:06 am 
Newbie

Joined: Thu Oct 26, 2006 1:34 pm
Posts: 11
I use Hibernate together with MySQL 5.1.30.

I have the next libraries:

- c3p0-0.0.1.2.jar
- mysql-connector-java-5.0.3-bin.jar
- hibernate3.jar


I use a hibernate.cfg.xml for configuration:


Code:
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
   
    <hibernate-configuration>
        <session-factory>
           <!-- Database connection settings -->
            <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>   
       
            <property name="connection.url">jdbc:mysql://localhost/fooDatatbase</property>
       <property name="connection.username">foo</property>
       <property name="connection.password">foo123</property>
                         
              <!-- Use the C3P0 connection pool provider -->
       <property name="hibernate.c3p0.min_size">5</property>
       <property name="hibernate.c3p0.max_size">20</property>
       <property name="hibernate.c3p0.timeout">300</property>
       <property name="hibernate.c3p0.max_statements">50</property>
       <property name="hibernate.c3p0.idle_test_periods">3000</property>      
          
            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
   
            <!-- Enable Hibernate's automatic session context management -->
            <property name="current_session_context_class">thread</property>
   
            <!-- Disable the second-level cache  -->
            <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
   
            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">true</property>
           
            <mapping resource="databaselayer/mail/Mail.hbm.xml"/>
            <mapping resource="databaselayer/courses/Course.hbm.xml"/>
            <mapping resource="databaselayer/price/Price.hbm.xml"/>       
            <mapping resource="databaselayer/contact/Contact.hbm.xml"/>
            <mapping resource="databaselayer/artists/Musician.hbm.xml"/>
            <mapping resource="databaselayer/concerts/Concert.hbm.xml"/>     
            <mapping resource="databaselayer/welcome/Welcome.hbm.xml"/>
            <mapping resource="databaselayer/information/Information.hbm.xml"/>                        
        </session-factory>
    </hibernate-configuration>



In the JAVA persistance with hibernate book, c3p0 configuration options are explained:


- hibernate.c3p0.min_size This is the minimum number of JDBC connections that C3P0 keeps ready at all times
- hibernate.c3p0.max_size This is the maximum number of connections in the pool. An exception is thrown at runtime if this number is exhausted.
- hibernate.c3p0.timeout You specify the timeout period (in this case, 300 seconds) after which an idle connection is removed from the pool).
- hibernate.c3p0.max_statements Maximum Number of statements that will be cached. Caching of prepared statements is essential for best performance with Hibernate.
- hibernate.c3p0.idle\_test_periods This is the iddle time in seconds before a connection is automatically validated.


I use Java 1.5.0_09 and tomcat 6.0. I have three applications deployed in tomcat. Each of them uses hibernate with a configuration file almost equivalent the shown above (only username, databasename, password and the mapping resoruces change).


Unfortunately with the above settings, after some hours running i get some nasty **Deadlock errors** which end killing tomcat.

Code:
Jan 22, 2009 3:29:07 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
    WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@2437d -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    Jan 22, 2009 3:29:07 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
    WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1dc5cb7 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    Jan 22, 2009 3:29:07 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
    WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@9cd2ef -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    Jan 22, 2009 3:29:07 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
    WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4af355 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    Jan 22, 2009 3:29:07 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
    WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1275fcb -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    Jan 22, 2009 3:29:35 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run



This seems to be an error several people already got. I changed my settings trying to follow the workaround described here http://forum.hibernate.org/viewtopic.php?p=2386237 to:

Code:
    <property name="hibernate.c3p0.acquire_increment">1</property>
    <property name="hibernate.c3p0.min_size">0</property>
    <property name="hibernate.c3p0.max_size">48</property>
    <property name="hibernate.c3p0.timeout">0</property>
    <property name="hibernate.c3p0.max_statements">0</property>


With the new settings, I do not get Deadlocks, but i get:

Code:
   WARNING: SQL Error: 0, SQLState: 08S01
    Jan 24, 2009 5:53:37 AM org.hibernate.util.JDBCExceptionReporter logExceptions
    SEVERE: Communications link failure due to underlying exception:
   
    ** BEGIN NESTED EXCEPTION **
   
    java.io.EOFException
   
    STACKTRACE:
   
    java.io.EOFException
       at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)



Does anyone knows what i am doing wrong, and how can i setup c3p0 correctly?

Thanks in advanced!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.