После обновления приложения Rails из RestfulAuthentication и Rails 2.3 для разработки и Rails 5.0 мы получаем странные ошибки «401 Unauthorized», а приложение rails зависает по первому запросу:Rails app hangs: Completed 401 Unauthorized in x ms
Completed 401 Unauthorized in x ms
где x - очень большое число. Ошибка возникает, только если сервер запускается в первый раз (после длительного периода бездействия). Приложение просто зависает и отказывается запускаться, а если мы прерываем сервер, появляются ошибки 401 Unauthorized. Не похоже, чтобы мы использовали Webrick, Puma, Thin или Unicorn. ApplicationController
выглядит
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :set_http_headers
alias login_required authenticate_user!
...
(псевдоним был добавлен, чтобы гарантировать плавный переход к Придумайте). Файл конфигурации database.yml выглядит
development:
adapter: mysql2
encoding: utf8
database: db_name
pool: 5
timeout: 5000
username: db_user
passwort:
После того, как приложение работает ошибка исчезает, но если перезагрузить компьютер через несколько часов или на следующий день, ошибка появляется снова. не
Иногда бывает таймаут ошибки как
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.003 seconds); all pooled connections were in use
или
No live threads left. Deadlock? (fatal)
соответстующем DEViSE вопросы (here и here) не являются полезными, и ни один из связанных с этим вопросов не предусмотрен решение, ни ActiveRecord::Base.clear_active_connections!
помогает, как предложено here или Session.delete_all
(сеанс хранится в ActiveRecord). Помогите! Есть идеи?
Это будет очень трудно устранить, не имея доступа к приложению. вы действительно модернизировать от 2,3 до 5,0? в один присест? T купите много других проблем :) Или вы обновлялись с шагом? Тогда между этими версиями это действительно произошло? – Thilo
На самом деле мы создали новое приложение Rails 5, которое подключено к старой базе данных MySQL, и немного изменило его в соответствии с официальными рекомендациями https://github.com/plataformatec/devise/wiki/How-To:-Migrate- from-restful_authentication-to-Devise – 0x4a6f4672
Проблема, скорее всего, в вашем коде, который вы не включили в вопрос. Мы должны убедиться в этом, чтобы иметь возможность диагностировать проблему. Перед тем, как * Завершено 401 Неавторизованная строка x ms * в вашем журнале, должна быть еще одна строка, указывающая, какой контроллер и действие обрабатывают запрос - отправьте код для этого контроллера. Если это происходит в * каждом запросе, отправьте контроллер приложения. – ArtOfCode