После нашего обновления 3.1.0, выпущенного сегодня, поиск перестал работать.
Наша команда системных администраторов выявила проблему и предоставила нам лог, указывающий на ошибку приложения.
Сталкивается ли кто-то ещё с этой проблемой? Какие могут быть подсказки, чтобы мы могли решить её самостоятельно? Я вижу, что поиск на Discourse Meta работает идеально.
Started GET "/search?q=37%20%20realm&page=1" for [IP_REDACTED] at 2023-01-13 11:19:36 +0000
Processing by SearchController#show as JSON
Parameters: {"q"=>"37 realm", "page"=>"1"}
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms | Allocations: 1555)
ArgumentError (wrong number of arguments (given 1, expected 0))
lib/search.rb:285:in `execute'
app/controllers/search_controller.rb:73:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : wrong number of arguments (given 1, expected 0)
Поиск полностью неработоспособен при использовании PostgreSQL 14, поэтому мы по-прежнему поставляем PostgreSQL 13 для всех, кто следует нашей стандартной процедуре установки.
Мы в конечном итоге исправим эту проблему, так как однажды обновимся до PostgreSQL 15 (или 16), но это может занять некоторое время.
Здесь указано требование «Postgres 13+». Не ошибусь ли я, предложив вашей команде добавить уведомление о том, что Discourse поддерживает только версии 13.X? Возможно, было бы полезно также явно указать, что версии 14/15/… не поддерживаются, особенно в таких случаях, как наш.
Дело в том, что у нас уже как минимум с декабря была версия 14, а стабильная версия Discourse была установлена ещё несколько месяцев назад. Недавно мы вернулись к версии tests-passed, и поиск работал как ожидалось. Сегодня мы обновились с 2.9.0.beta14 до 3.1.0.beta1, и теперь всё сломалось.
Неясно, но в моем случае это была именно эта проблема (те же симптомы, хотя использовался PostgreSQL 13). Я уверен, что Ричард скоро это исправит. В качестве временного решения можно сделать форк и внести простое изменение.
Ох, как досадно. У меня есть один сайт, который я случайно обновил до PG14 довольно давно, и думал, что всё будет в порядке.
Я только что выполнил несколько поисков, и они не казались явно сильно сломанными. Кроме того, сайт в основном на китайском языке, так что я всё равно не смог бы точно определить проблему.
Насколько всё серьёзно сломано и насколько сложно будет это исправить?
Безопасный режим влияет только на клиентскую часть. Эта ошибка возникает на стороне сервера. Чтобы проверить, связана ли ошибка с плагином личных ответов, вам нужно полностью удалить этот плагин.
Эта ошибка, похоже, связана с несовместимостью плагина с Ruby 3.1
Этот плагин нарушает работу поиска и вызывает ошибку 500.
Однако использование PostgreSQL 14 и выше также сломает поиск, но более незаметно: многие результаты, которые возвращались в pg13, не будут возвращаться в pg14+.
Таким образом, @kinetiksoft может удалить плагин и пересобрать систему, чтобы поиск перестал выдавать ошибки, но он всё равно не будет работать нормально из-за версии PostgreSQL.
Вы проверяли документацию по запуску внешнего PostgreSQL? Она находится здесь, на Meta, а не на GitHub. Вся документация доступна по адресу Documentation - Discourse Meta