Play framework 2, postgres Это соединение закрыто

Я запускаю приложение Play 2.2.0, используя Postgres 9.2-1002-jdbc4 и API Anorm 2.2.0. Время от времени у меня возникают проблемы с подключением, которые выглядят так:

2013-11-19 19:45:36,544 [ERROR][a.d.Dispatcher][play-akka.actor.default-dispatcher-17] This connection has been closed.org.postgresql.util.PSQLException: This connection has been closed.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:822) ~[org.postgresql.postgresql-9.2-1002-jdbc4.jar:na]
    at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:769) ~[org.postgresql.postgresql-9.2-1002-jdbc4.jar:na]
    at com.jolbox.bonecp.ConnectionHandle.setAutoCommit(ConnectionHandle.java:1247) ~[com.jolbox.bonecp-0.8.0-rc1.jar:na]
    at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:251) ~[com.jolbox.bonecp-0.8.0-rc1.jar:na]
    at com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273) ~[com.jolbox.bonecp-0.8.0-rc1.jar:na]
    at com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476) ~[com.jolbox.bonecp-0.8.0-rc1.jar:na]
    at play.api.db.AutoCleanConnection.close(DB.scala:485) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.DBApi$class.withConnection(DB.scala:84) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.BoneCPApi.withConnection(DB.scala:276) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.DBApi$class.withTransaction(DB.scala:97) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.BoneCPApi.withTransaction(DB.scala:276) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.DB$$anonfun$withTransaction$4.apply(DB.scala:185) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at play.api.db.DB$$anonfun$withTransaction$4.apply(DB.scala:185) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]
    at scala.Option.map(Option.scala:145) ~[org.scala-lang.scala-library-2.10.2.jar:na]
    at play.api.db.DB$.withTransaction(DB.scala:185) ~[com.typesafe.play.play-jdbc_2.10-2.2.0.jar:2.2.0]

Я не знаю проблем с подключением к БД; БД работает на том же поле. Эти проблемы с подключением возникают периодически примерно 2-3 раза в день и восстанавливаются сами по себе.

Я попробовал эти смехотворно низкие настройки теста соединения:

db.default.idleConnectionTestPeriod=10 seconds
db.default.idleMaxAge=30 seconds
db.default.maxConnectionAge=60 seconds

Эти настройки подключения, похоже, уменьшают его, хотя мне интересно, происходит ли что-то более фундаментальное. В логах postgres ничего не появляется.


person seand    schedule 19.11.2013    source источник
comment
Я получаю то же самое. Вероятно, это вызвано пулом соединений BoneCP. Эта ошибка наблюдалась ранее в BoneCP 0.8.0-rc3 и совсем недавно в 0.8.0.RELEASE   -  person stys    schedule 06.12.2013
comment
Я не понял первопричину. Я взломал его, просто повторив попытку подключения, когда возникает это исключение. Это некрасиво, но работает.   -  person seand    schedule 06.12.2013


Ответы (1)


Была ошибка, связанная с BoneCP (точнее, с некоторыми из них), которая была исправлена ​​в Play 2.2.3: https://github.com/playframework/playframework/pull/1898

person Manuel Bernhardt    schedule 10.05.2014
comment
Эта проблема больше не возникает в 2.2.3 - person seand; 05.09.2014