ログに次のエラーが繰り返し表示されることがあります。
com.mchange.v2.c3p0.impl.NewPooledConnection - [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
com.mchange.v2.c3p0.impl.NewPooledConnection - [c3p0] Another error has occurred [ org.postgresql.util.PSQLException: This connection has been closed. ] which will not be reported to listeners!
org.postgresql.util.PSQLException: This connection has been closed.
at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:822)
at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:839)
at com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:855)
at org.squeryl.dsl.QueryDsl$class._executeTransactionWithin(QueryDsl.scala:131)
at org.squeryl.dsl.QueryDsl$class.transaction(QueryDsl.scala:78)
at org.squeryl.PrimitiveTypeMode$.transaction(PrimitiveTypeMode.scala:40)
transaction {}
その下には、ブロックのポイントまでの自分のコードのトレースがあります。
私のソフトウェアはtransaction {}
例外をスローした後に を繰り返しますが、同じ (閉じた) 接続を再度使用しているように見えるため、次の試行も失敗します。奇妙なことに、これにはかなりの時間がかかり、50 秒、2 分かかることもあります。閉じられた接続はすぐに失敗すると思うでしょう。
Squeryl がこの接続をプールに解放し、新しい接続を取得するにはどうすればよいですか?