2016-11-29 1 views
5
abgelaufen

ich folgende this advice auf glücklich war wie ein Debugger in meinem Phoenix Controller Tests auszuführen:Elixir hebeln Sitzung unterbrochen, da die Datenbankverbindung

  • require IEx in der Zieldatei
  • hinzufügen IEx.pry auf die gewünschte Linie
  • die Tests innerhalb IEx: iex -S mix test --trace

Aber nach ein paar Sekunden dieser Fehler immer erschienen:

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 

Wie die Meldung sagt, wird die Datenbankverbindung an dieser Stelle zu einer Zeitüberschreitung und alle Befehle, die die Datenbankverbindung aufrufen wird mit einem DBConnection.OwnershipError Fehler aus. Wie kann ich meiner Datenbankverbindung mitteilen, dass die Zeit nicht überschritten wird, damit ich meine Tests in Ruhe debuggen kann?

Antwort

3

Die Ecto.Adapters.SQL.Sandbox FAQ erwähnt dieses Problem und erklärt, dass Sie die :ownership_timeout Einstellung zu Ihrer Repo-Konfiguration hinzufügen können, um anzugeben, wie lange Db-Verbindungen geöffnet bleiben sollten, bevor das Zeitlimit überschritten wird. Ich habe meine zu 10 Minuten (Testumgebung nur) so habe ich nie wieder darüber nachdenken:

# config.test.exs 

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

Wie erwartet, kann ich jetzt herumalbern in pry für 10 Minuten vor diesem Fehler zu sehen.

+0

Auch: 'ExUnit.configure (timeout:: unendlich)' und/oder 'iex -S mix test --trace' sind weltweite Alternativen. – mudasobwa

+3

Danke für diesen Tipp; Ich habe 'ExUnit.configure (timeout:: infinity) nicht versucht', aber ich kann bestätigen, dass 'iex -S mix test --trace' * request * timeouts verhindert, aber nicht das * db connection * timeout verhindert (siehe Schritte, die ich in der obigen Frage versucht habe). Ich frage mich, ob ich das als Bug behandeln soll? –

+0

Keine Ahnung. Wahrscheinlich ja, aber ich bin mir nicht sicher. – mudasobwa