我遇到了一个问题,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之后它仍然会超时。还有其他我应该寻找的设置吗?
答案 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
选项来增加超时时间: