2015-07-05 135 views
0

這涉及到一個以前未解決的職位:here C3P0似乎在初始化Heroku上的連接池後立即進入死鎖。這個問題不會發生在我的本地postgres上。C3P0與Heroku Postgres連接池失速

下面是hibernate.hbm.xml

<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 



    <!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 


    <property name="hibernate.connection.url">jdbc:postgresql://myurl:5432/mydb?user=myusername&amp;password=myoassword&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory&amp;ssl=true</property> 
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
    <property name="hibernate.connection.username">myusername</property> 
    <property name="hibernate.connection.password">mypassword</property> 
    <property name="hibernate.archive.autodetection">class</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 
    <property name="hbm2ddl.auto">create</property> 

    <!-- c3p0 connection pool settings --> 
    <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> 
    <property name="hibernate.c3p0.min_size">1</property> 
    <property name="hibernate.c3p0.max_size">2</property> 
    <property name="hibernate.c3p0.timeout">1800</property> 

連接配置這裏的日誌。注意「Running DeadlockDetector」的運行時間爲10秒鐘,約一分鐘。還要注意下面的調用異常:

[DEBUG] 「com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager」 2015年7月5日07:12:57851:面向auth,用戶名(蒙面創建新池):'sp ******'。

[DEBUG] 「com.mchange.v2.resourcepool.BasicResourcePool」 2015年7月5日07:12:57851:獲取測試 - 池大小:0; target_pool_size:1;期望的目標? 1

...刪除了一些線,用於簡約

[DEBUG] 「com.mchange.v2.resourcepool.BasicResourcePool」 2015年7月5日07的緣故:12:59132:採集系列成功地終止。遞減pending_acquires 1,attempts_remaining:30

[DEBUG] 「com.mchange.v2.resourcepool.BasicResourcePool」 2015年7月5日07:12:59132:跟蹤[email protected] [管理:2,unused:1,excluded:0](例如[email protected]

[DEBUG]「com.mchange.v2.resourcepool.BasicResourcePool」2015-07-05 07:12:59,132:遞減pending_acquires:0

[DEBUG]「com.mchange.v2.resourcepool.BasicResourcePool」2015-07-05 07:12:59,132:採集序列成功終止。 Decreated pending_acquires [0],attempts_remaining:30

[DEBUG]「com.mchange.v2.resourcepool.BasicResourcePool」2015-07-05 07:12:59,132:trace [email protected] [管理:2,未使用:1,排除:0](例如[email protected]

[DEBUG]「com.mchange.v2.async.ThreadPoolAsynchronousRunner」2015-07 -05 07:13:07,841:com[email protected]45912fb9 - 運行DeadlockDetector [退出。沒有尚未完成的任務]

...重複每十秒鐘

[DEBUG] 「com.mchange.v2.async.ThreadPoolAsynchronousRunner」 2015年7月5日07:13:47859:com.mchange.v2 .async.ThreadPoolAsynchronousRunner $ DeadlockDetector @ 45912fb9 - 運行DeadlockDetector [退出。沒有尚未完成的任務]

[信息] 「的org.hibernate.dialect.Dialect」 2015年7月5日07:13:55,467:HHH000400:使用方言:org.hibernate.dialect.PostgreSQLDialect

[INFO ]「org.hibernate.engine.jdbc.internal.LobCreatorBuilder」2015-07-05 07:13:55,472:HHH000424:禁用上下文LOB創建爲createClob()方法拋出錯誤:java.lang.reflect.InvocationTargetException

[DEBUG] 「com.mchange.v2.async.ThreadPoolAsynchronousRunner」 2015年7月5日07:13:55576:[email protected]:添加任務排隊 - COM。mchange.[email protected]55b699ef

+0

休眠切換調試日誌。在死鎖檢測器之前立即找到一行: [DEBUG]「org.hibernate.engine.jdbc.cursor.internal.StandardRefCursorSupport」2015-07-05 07:39:21,781:嘗試測量JDBC REF_CURSOR支持級別的意外錯誤:空值 – Jake

回答

1

答案是,事實上,已經發布和很好的解釋here

添加以下到我的hibernate.hbm.xml

<property name="temp.use_jdbc_metadata_defaults">false</property>