Проблема с обновлением: сломанный форум

Здравствуйте,

У меня проблема с последним обновлением. Мой форум сломан.

Вот сообщение, которое я вижу в SSH:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 2472 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
3d52a3f170f714bf580dcd30effbf9306fbf6e0ef1f786cf9dd4e326b066e6a4
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Подскажите, пожалуйста, где может быть проблема и как её исправить?

Огромное спасибо.

Не могли бы вы прокрутить вверх, проверить более конкретные ошибки и посмотреть, что там написано?

Привет,

вот ссылка на полную историю процесса. Очевидно, есть ошибки с PostgreSQL, хотя я не уверен, что проблема именно в нём.

https://pastebin.com/nqLWDRAC

Как вы установили? Какую версию PostgreSQL вы используете?

Причина:
PG::InsufficientPrivilege: ОШИБКА: отказано в разрешении на создание расширения "unaccent"
СОВЕТ: Для создания этого расширения необходимы права суперпользователя.

Я вошел как root.
У меня нет прав выше :slight_smile:

Не знаю насчет postgres.
«Программа „pg_config“ может быть найдена в следующих пакетах:»

Форум работает.
Я перезагрузил сервер.

Первая проблема решена, но у меня возникла вторая.

При создании или ответе на пост я получаю ошибку “500 Internal Server Error”.

Подскажите, как её исправить?

Привет,

Я обнаружил эту ошибку в файле журнала:

ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block ) app/models/post.rb:973:in `block in link_post_uplo 
ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR:  current transaction is aborted, commands ignored until end of transaction block
)
app/models/post.rb:973:in `block in link_post_uploads'
app/models/post.rb:972:in `link_post_uploads'
lib/post_creator.rb:217:in `block in create'
lib/post_creator.rb:409:in `block (2 levels) in transaction'
lib/post_creator.rb:408:in `block in transaction'
lib/distributed_mutex.rb:33:in `block in synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:14:in `synchronize'
lib/post_creator.rb:407:in `transaction'
lib/post_creator.rb:205:in `create'
lib/new_post_manager.rb:285:in `perform_create_post'
lib/new_post_manager.rb:223:in `perform'
app/controllers/posts_controller.rb:193:in `create'
app/controllers/application_controller.rb:400:in `block in with_resolved_locale'
app/controllers/application_controller.rb:400:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:358:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'

Есть ли у вас идеи, в чём проблема?

Это стандартная установка?

Да,

я использую форум уже 6 лет.

Последняя установленная версия — 2.9.0.beta3

У вас установлены какие-либо плагины? Может, выложите ваш app.yml?

Какая у вас версия PostgreSQL? Просто выполните launcher enter app, а затем введите psql -V

Привет,

Я протестировал, и исходная проблема вернулась.

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 2458 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
45d3621c802f025ef80ad34e77ec3318a48677b0de0134210120ef7690b6e6f4
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Думаю, проблема возникла при обновлении из-за нехватки места на жестком диске. Я освободил немного места, и теперь свободно 67%. Однако проблема осталась, но какая именно?

Программа ‘psql’ в настоящее время не установлена.
Мне нужно её установить?

Вы выполнили

  launcher enter app

перед командой psql?

То же самое.
Я пытаюсь установить, но получаю это сообщение:

E: Пакет libperl5.22 необходимо переустановить, но я не могу найти для него архив.

Я ещё раз посмотрел ваш лог-файл Pastebin. Там указано Postgres 10.
Вы точно уверены, что это стандартная настройка, установленная в соответствии с discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub?

Я уже говорил это раньше: форум существует уже много лет, и у меня никогда не возникало серьёзных проблем. Обычно достаточно было переустановки или обновления, чтобы всё снова заработало.
Да, это стандартная установка.

Моя последняя попытка.

Пожалуйста, выполните

cd /var/discourse
./launcher enter app
psql -V

и скопируйте это полностью в ответ, включая команды и вывод.

psql (PostgreSQL) 10.19 (Debian 10.19-1.pgdg110+1)

Хорошо, отлично. Это другой результат, чем в прошлый раз.
Теперь выполните следующее:

cd /var/discourse
git pull
./launcher rebuild app

Если возникнут ошибки, пожалуйста, опубликуйте ВЕСЬ вывод, включая ваши команды, в ответе (или на Pastebin).

Интересно, что я столкнулся с той же или схожей ошибкой. Я работаю на Discourse 2.9.0.beta2 и попытался обновиться до ß3. Я отключил все плагины, кроме docker_manager, для команды ./launcher rebuild app. Использую внешнюю базу данных PostgreSQL версии:

$ psql --version
psql (PostgreSQL) 14.1 (Ubuntu 14.1-1.pgdg18.04+1)

После сбоя я могу перезапустить контейнер через ./launcher restart app, но при этом ответы возвращают ошибку 500.

Финальная ошибка при пересборке/обновлении:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 658 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Фактические значимые ошибки выше можно найти здесь: https://p153.p0.n0.cdn.getcloudapp.com/items/jkuvPekN/feb38236-3b84-410e-8fac-d1864d02ba69.txt?v=eb1d15e029cb07a73300d8ec07318876

Мне трудно поверить, что это действительно проблема с правами доступа, и я колеблюсь давать базе данных Discourse права суперпользователя/root для pgsql.

Есть ли у кого-нибудь дополнительные мысли о том, что может происходить здесь с таким недавним сбоем?