【问题标题】:Play slick application - connection leakPlay slick 应用程序 - 连接泄漏
【发布时间】:2013-09-05 19:32:29
【问题描述】:

我在 play 2.1.3 应用程序中使用 play-slick。
这是插入记录的代码

  def insert = DBAction { implicit rs =>
    recordForm.bindFromRequest.fold (
        formWithErrors => {
          Redirect(HomePage).flashing("alert-error" -> "Enter proper values")
        },
        record => {
          Records.insert(record)
          Redirect(HomePage).flashing("alert-success" -> "Record inserted successfully")
        }
    )            
  }

以上代码泄漏连接,应用程序在 30+ 个请求后抛出以下错误

java.sql.SQLException: Timed out waiting for a free available connection.
    at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:503) ~[bonecp.jar:0.7.1.RELEASE]
    at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:114) ~[bonecp.jar:0.7.1.RELEASE]
    at scala.slick.session.PlayDatabase.createConnection(PlayDatabase.scala:9) ~[na:na]
    at scala.slick.session.BaseSession.conn$lzycompute(Session.scala:207) ~[slick_2.10-1.0.1.jar:1.0.1]
    at scala.slick.session.BaseSession.conn(Session.scala:207) ~[slick_2.10-1.0.1.jar:1.0.1]
    at scala.slick.session.Session$class.prepareStatement(Session.scala:29) ~[slick_2.10-1.0.1.jar:1.0.1]

报告了类似的问题,但此代码略有不同。
有什么想法吗?

【问题讨论】:

  • 如果此代码泄漏连接,您可能需要raise an issue 为开发人员。

标签: scala playframework slick play-slick


【解决方案1】:

这可能是https://github.com/freekh/play-slick/issues/81 中描述的错误“2)”的一个实例。它已在 play-slick master 中修复,并将在下一个版本中发布。此处解释了 play-slick 中的错误代码 Play slick and Async - is it a race condition? 。该错误触发了 Slick 中的后续错误,而不是抛出异常,而是泄漏了连接:https://github.com/slick/slick/pull/107

【讨论】:

  • 是的,我克隆了最新的 play-slick 代码并将我的应用程序指向它。现在它工作正常。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2023-03-16
  • 2010-09-17
  • 2012-06-01
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
相关资源
最近更新 更多