アップデートの問題:フォーラムが壊れた

こんにちは。

前回のアップデートで問題が発生しました。フォーラムが壊れています。
SSHでこのメッセージが表示されます。

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' がリターン #<Process::Status: pid 2472 exit 1> で失敗しました
失敗場所: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec がパラメータ {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]} で失敗しました
3d52a3f170f714bf580dcd30effbf9306fbf6e0ef1f786cf9dd4e326b066e6a4
** BOOTSTRAP に失敗しました ** 上にスクロールして、以前のエラーメッセージを探してください。複数ある可能性があります。
./discourse-doctor が問題を診断するのに役立つかもしれません。

問題の原因と修正方法について何かアイデアはありますか?

どうぞよろしくお願いいたします。

「いいね!」 2

もっと具体的なエラーがないか上にスクロールして確認し、何が書かれているか教えていただけますか?

「いいね!」 1

こんにちは。

プロセス全体をPastebinにまとめました。PostgreSQLにエラーがあるようですが、問題がそこから来ているかは定かではありません。

https://pastebin.com/nqLWDRAC

どのようにインストールしましたか?どのPostgresを使用していますか?

Caused by:
PG::InsufficientPrivilege: ERROR:  extension "unaccent" を作成する権限がありません
HINT:  この拡張機能を作成するにはスーパーユーザーである必要があります。
「いいね!」 1

rootでログインしました。
これ以上の権限は持てません :slight_smile:

postgresについてはわかりません
「プログラム ‘pg_config’ は以下のパッケージで見つかります。」

フォーラムはオンラインです。
サーバーを再起動しました。

最初の問題は解決しましたが、2つ目の問題があります。
投稿の作成または返信時に「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/middleware/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 を投稿していただけますか?

Postgresのバージョンは何ですか? launcher enter app を実行してから psql -V と入力してください。

「いいね!」 2

こんにちは。

テストしましたが、元の問題が再発しました。

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’ は現在インストールされていません。
インストールする必要がありますか?

psql コマンドの前に

launcher enter app

を実行しましたか?

「いいね!」 1

同じです。
インストールを試みましたが、このメッセージが表示されます。

E: パッケージ libperl5.22 を再インストールする必要がありますが、アーカイブが見つかりません。

ログファイルのペーストビンをもう一度確認しました。Postgres 10と記載されています。
discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub に従ってインストールされた標準的なセットアップであることを確認していますか?

「いいね!」 1

以前から言っていますが、このフォーラムは長年続いており、大きな問題は一度もありませんでした。通常、再構築やアップデートで元通りになりました。
はい、通常のインストールです。

最後の試みです。

以下のコマンドを実行し、コマンドと出力を含めてすべて返信にコピーしていただけますか?

cd /var/discourse
./launcher enter app
psql -V
「いいね!」 1
psql (PostgreSQL) 10.19 (Debian 10.19-1.pgdg110+1)

わかりました、素晴らしいです。前回とは違う結果ですね。
では、以下の手順を実行してください。

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

エラーが発生した場合は、コマンドを含め、出力全体を返信(またはPastebin)に投稿してください。

「いいね!」 1

興味深いことに、私も同様のエラー、またはそれに近いエラーを経験しました。Discourse 2.9.0.beta2 で実行しており、ß3 へのアップデートを試みました。./launcher rebuild app のために docker_manager 以外のすべてのプラグインを無効にしました。外部 PGSQL DB で実行しており、バージョンは以下の通りです。

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

再構築/アップグレード中の最終的なエラーは以下の通りです。

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 658 exit 1&gt;
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"=&gt;"$home", "hook"=&gt;"db_migrate", "cmd"=&gt;["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 DB ユーザーに pgsql のスーパーユーザー/root 権限を与えることに躊躇しています。

このような最近の破損で何が起こっているのか、他に何か考えはありますか?