Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Сеанс Elixir pry прерван из-за истечения времени ожидания подключения к базе данных

Автор вопроса: Topher HuntОтветов: 1

Я с радостью следовал этому совету о том, как запустить pry в отладчике моих тестов контроллера Phoenix:

  • 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. Как мне запретить подключение к базе данных по тайм-ауту, чтобы я мог спокойно отлаживать свои тесты?

debuggingtestingphoenix-frameworkelixirectopry

Ответы

Ответ 1 · рейтинг 7 · Topher Hunt

Об этом упоминается в часто задаваемых вопросах по Ecto.Adapters.SQL.Sandbox. проблема и объясняет, что вы можете добавить параметр :ownership_timeout в конфигурацию вашего репо, чтобы указать, как долго соединения с базой данных должны оставаться открытыми до истечения времени ожидания. Я установил для себя 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 минут, прежде чем увижу эту ошибку.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы