2016-11-29 6 views
5

я был счастлив следующий this advice о том, как запустить отладчик в моих тестах контроллера Phoenix:Elixir подглядывать сессия прерывается, потому что соединение с базой данных истекло

  • require IEx в целевом файле
  • добавить IEx.pry в нужную строку
  • запустить тесты в Iex: iex -S mix test --trace

Но через несколько секунд эта ошибка всегда появлялась:

16:51:08.108 [error] Postgrex.Protocol (#PID<0.250.0>) disconnected: 
** (DBConnection.ConnectionError) owner #PID<0.384.0> timed out because 
it owned the connection for longer than 15000ms 

Как говорится в сообщении, соединение с базой данных, как представляется, тайм-аут в этой точке, и любые команды, которые вызывают соединение с базой данных выдаст ошибку с DBConnection.OwnershipError. Как сообщить о подключении базы данных к тайм-ауту, чтобы я мог спокойно отлаживать мои тесты?

ответ

3

Ecto.Adapters.SQL.Sandbox FAQ упоминает эту проблему и объясняет, что вы можете добавить настройку :ownership_timeout в конфигурацию Repo, чтобы указать, как долго db-соединения должны оставаться открытыми до истечения времени. Я установить мину 10 минут (тестовая среда только), поэтому я никогда не придется думать об этом снова:

# config.test.exs 

config :rumbl, Rumbl.Repo, 
    # ...other settings... 
    ownership_timeout: 10 * 60 * 1000 # long timeout so pry sessions don't break 

Как и следовало ожидать, я теперь могу пошалить в pry в течение 10 минут, прежде чем увидеть эту ошибку.

+0

Также: 'ExUnit.configure (timeout:: infinity)' и/или 'iex -S mix test -trace' являются альтернативами во всем мире. – mudasobwa

+3

Спасибо за этот совет; Я не пытался использовать ExUnit.configure (timeout:: infinity) ', однако я могу подтвердить, что' iex -S mix test -trace' не позволяет * запросить * таймауты, но не предотвращает тайм-аут соединения * db * шаги, которые я пробовал в вопросе выше). Интересно, я должен рассматривать это как ошибку? –

+0

Не знаю. Наверное, да, но я не уверен. – mudasobwa

 Смежные вопросы

  • Нет связанных вопросов^_^