在CircleCI测试期间增加Postgrex数据库超时

时间:2017-05-10 21:05:10

标签: postgresql elixir ecto circleci

我遇到了一个问题,mix test偶尔会在CircleCI上失败并出现以下错误:

  

16:46:05.935 [错误] Postgrex.Protocol(#PID< 0.9303.0>)已断开连接:**(DBConnection.ConnectionError)所有者#PID< 0.73.0>超时因为它拥有超过15000ms的连接

我尝试将测试配置中的超时增加到:

config :my_app, MyApp.Repo,
  adapter: Ecto.Adapters.Postgres,
  database: System.get_env("DB_NAME"),
  username: System.get_env("DB_USER"),
  password: System.get_env("DB_PASS"),
  hostname: System.get_env("DB_HOST"),
  pool: Ecto.Adapters.SQL.Sandbox,
  timeout: 30000

但是在15000ms之后它仍然会超时。还有其他我应该寻找的设置吗?

1 个答案:

答案 0 :(得分:3)

您需要在此处增加ownership_timeout,而不是timeout。这在owner timed out because it owned the connection for longer than Nms

部分的Ecto.Adapters.SQL.Sandbox模块文档中有记录
  

如果您有一个长时间运行的测试(或者您使用IEx.pry进行调试),则连接所有权的超时可能太短。您可以通过在:ownership_timeout(或最好在config/config.exs中)设置repo配置的config/test.exs选项来增加超时时间: