После простоя базы данных Rails сначала выбросит эту ошибку один раз:
ActiveRecord:: StatementInvalid: NativeException: org.postgresql.util.PSQLException: соединение отклонено. Убедитесь, что имя хоста и порт правильны и что почтмейстер принимает TCP/IP.
С этого момента каждый вызов базы данных имеет следующую ошибку, даже после резервного копирования базы данных:
ActiveRecord:: StatementInvalid: ActiveRecord:: JDBCError: Это соединение было закрыто.
Чтобы запустить сервер снова, я должен перезапустить сервер rails. Это не идеально для нас, так как наши инженеры-разработчики хотели бы выполнять техническое обслуживание наших баз данных, не прибегая также к восстановлению всех служб, которые зависят от базы данных. Итак, мне интересно - есть ли способ автоматически получить Rails, чтобы попытаться восстановить соединение с базой данных или рекомендованный способ получить это поведение?
Вещи, которые я пробовал:
Я уже пробовал настройку reconnect to true в моих настройках базы данных, и с этим я могу убить отдельные соединения с базой данных, а рельсы восстановят соединения. Однако после сбоя базы данных это не произойдет. Я обнаружил, что из командной консоли я могу восстановить соединение, вызвав
ActiveRecord:: Base:: establish_connection
Так что, может быть, найти чистое место для рельсов, чтобы вызвать вышеприведенную команду, это сработает? Любые предложения?