Изящно форсировать переподключение базы данных в Rails 4 - PullRequest
0 голосов
/ 29 ноября 2018

У нас есть приложение на Rails 4, которое использует базу данных, которая иногда обновляется при обновлении нового экземпляра базы, а затем обновляет запись DNS, чтобы указать на новый экземпляр (не идеально, но я не могу изменитьтот).Проблема заключается в том, что пул соединений Rails по-прежнему сохраняет свои соединения открытыми для old базы данных и не будет общаться с новой базой данных, пока мы не перезапустим Rails.Мы можем сделать это, но это боль.

Мы хотели бы иметь административную оконечную точку, к которой мы могли бы обратиться, чтобы приложение изящно закрывало подключения к базе данных и перезапускалось.ActiveRecord::Base.connection_pool.disconnect! определенно закрывает старые соединения с базой данных, и когда запрашиваются новые, они общаются с новым экземпляром, но он также берет дробовик на все выполняющиеся запросы и завершает их, вместо того, чтобы позволить им завершить.

Есть лиспособ сообщить Rails обновить все свои соединения с базой данных во время выполнения таким образом, чтобы позволить текущим выполняющимся запросам завершиться до закрытия?

...