Ich habe eine Rails-App (4.1.5), die von einer postgres-Datenbank (9.2.13) unterstützt wird, mit dem PG-Gem (0.17.1), Unicorn-Server (1.1.0) mit 2 Worker-Prozessen.
Die App rails führt Jobs mit sidekiq (2.17.7)
ausIrgendwann ging die postgres db in den Wiederherstellungsmodus. Der folgende Fehler wurde von mehreren Jobs ausgelöst:
%Vor%Die Datenbank wurde wiederhergestellt, aber die Jobs verursachten weiterhin die folgenden zwei Fehler:
%Vor%und
%Vor%Es sieht so aus, als ob rails merkt, dass die Verbindung nicht aktiv ist und versucht, die Verbindung zurückzusetzen. Im Postgresql_adapter.rb des aktiven Datensatzes wird die folgende Methode aufgerufen:
%Vor%Ich nehme an, dass connection.reset nicht wirklich funktioniert. Wenn also der pg gem die Kodierung setzt (der erste Teil der Methode configure_connection), maskiert er die Tatsache, dass keine Verbindung besteht, indem er den kodierungsspezifischen Fehler auslöst .
Das Folgende ist eine Methode aus dem pg gem (.17.1) ext / pg_connection.c / 2804
%Vor%Wenn also diese Vermutungen richtig sind, warum funktioniert die Verbindung nicht? Neustarten der App stellt die Verbindung zur Datenbank wieder her, aber ich hoffe auf eine nicht-manuelle Lösung für dieses Problem.
Tags und Links ruby-on-rails ruby-on-rails-4 pg