DiscourseJsProcessor に関する移行の問題?

@david さん、ブートストラップで問題が発生しています。

I, [2023-08-24T16:50:36.568059 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/js-processor.js
/var/www/discourse/lib/discourse_js_processor.rb:140:in `read'
/var/www/discourse/lib/discourse_js_processor.rb:140:in `create_new_context'
/var/www/discourse/lib/discourse_js_processor.rb:156:in `block in v8'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `v8'
/var/www/discourse/lib/discourse_js_processor.rb:169:in `block in v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:193:in `perform'

これは DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub に関連していますか?

「いいね!」 1

さらに詳しいバックトレースはありますか? または、どのマイグレーションがそれをトリガーしているか確認できますか?

「いいね!」 2

心配しないでください。@cvxと私は問題を見つけました。すぐに修正します。

「いいね!」 1

うまくいきました!

数分前に新しいベースイメージで修正されると思いましたが、その後一度失敗しました。。。

とにかく、今は大丈夫そうです。

「いいね!」 1

Ok great, glad to hear it’s working! We have a bit of a chicken/egg situation which we need to resolve. Following the commit you linked, assets:precompile needs to be run at least once before running db:migrate. But the reverse is also true - assets:precompile needs an up-to-date db schema.

Out of interest, what was your process here? Were you doing a docker_manager-based upgrade via the UI? Or was this a ./launcher rebuild app? (or something else entirely?)
承知しました。正常に動作しているようで安心しました。解決すべき「ニワトリと卵」のような状況があります。リンクされたコミットの後では、db:migrate を実行する前に少なくとも一度 assets:precompile を実行する必要があります。しかし、その逆もまた真なりで、assets:precompile には最新の DB スキーマが必要です。

ちなみに、このプロセスはどのようなものでしたか?UI を介した docker_manager ベースのアップグレードでしたか?それとも ./launcher rebuild app でしたか?(あるいは全く別の方法でしたか?)

「いいね!」 1

早まったことを言いました。

また失敗しました。しかし、…。しかし、前回はデータベースはすでに移行されていましたか?

うまくいったとき、コマンドラインから ./launcher bootstrap x を実行しました。

次に、Ansible で実行しました。これは次を実行します。

      git pull && git checkout main && ./launcher bootstrap  {{ discourse_yml }} {{ launcher_args | default("")}}

git checkout main を削除する必要があると思います。なぜそれがそこにあったのかわかりません)

なるほど。しかし、Ansible は最初にデータベースを削除しています(これは移行に使用しているサイトなので、新しく始めることは頻繁にあります)。したがって、これはあなたのエッグと一致しています。ため息。しかし、その後 drop_database をオフにして Ansible から 2 回実行しましたが、失敗しました。その後、コマンドラインから再度ブートストラップしましたが、それでも失敗しました。移行に関する手がかりはありません。

Installing mysql2 0.5.5 with native extensions
Bundle complete! 137 Gemfile dependencies, 173 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into `./vendor/bundle`

I, [2023-08-24T17:24:31.403199 #1]  INFO -- : Replacing types { with set_real_ip_from 192.168.1.0/24;
set_real_ip_from 172.19.0.0/24;
set_real_ip_from 172.18.0.0/24;
set_real_ip_from 172.17.0.0/24;
set_real_ip_from 38.242.7.193/28;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
types {
 in /etc/nginx/conf.d/discourse.conf
I, [2023-08-24T17:24:31.403687 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-08-24T17:24:33.084210 #1]  INFO -- : discourse-microsoft-auth is already at latest compatible version

I, [2023-08-24T17:24:33.084593 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/js-processor.js
/var/www/discourse/lib/discourse_js_processor.rb:140:in `read'
/var/www/discourse/lib/discourse_js_processor.rb:140:in `create_new_context'
/var/www/discourse/lib/discourse_js_processor.rb:156:in `block in v8'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `v8'
/var/www/discourse/lib/discourse_js_processor.rb:169:in `block in v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:193:in `perform'
/var/www/discourse/lib/pretty_text.rb:54:in `apply_es6_file'

しかし、'templates/enable-ruby-yjit.yml' が問題である可能性もありますか? EDIT: それは違いました。そして、mysql と import のテンプレートを削除しました。それでもうまくいきません。

この問題はしばらく前からありましたか?最近別のサイトをアップグレードしたのですが、移行時に何か奇妙なことが起こっているように感じられ、その後アセットが壊れていました。しかし、データベースは巨大なので、単に忍耐が足りないだけだと思っていました。また、そのプロセスの一部を手作業で行ったので、不注意だっただけだと思っていました。

「いいね!」 1

@cvx がこれをマージしました。これにより、依存関係の問題が解決されるはずです(テストに合格したら)。

それは理にかなっています :+1:

エラーは、データベースマイグレーションがマークダウンエンジン(PrettyText)への呼び出しを含む場合にトリガーされると考えています。既存のサイトの大多数では、それはまれです。しかし、まったく新しいサイトでは、マークダウンを処理する必要があるため、新しいトピックをデータベースにシードします。

いいえ、ここ数時間だけです(https://github.com/discourse/discourse/pull/23223)以来。

「いいね!」 1

開発環境で git pull を実行した際にそのコミットを確認していますが、Ansible から実行した場合でもローカルで実行した場合でも、まだ失敗しています(データベースは削除していません)。

まだテストをパスする段階ではないため、標準的なインストールではまだ失敗すると予想されます。

これはローカルの「本番」クラスターですか?それとも開発環境ですか?

「いいね!」 1

本番環境です。リバースプロキシとしてtraefikを使用していますが、それ以外はほぼ標準的なインストールです(データベースも標準のpostgres13イメージから構築されていますが、pgvectorは含まれています)。

開発環境について言及したのは、コミットがテストを通過したかどうかを確認するために、そこで git pull を実行したからです。そこでは git logFIX: Compile js-processor before db:migrate (#23229) を確認しました。

以前テストしていたことを再度テストし、しばらくしてからもう一度試します。

開発環境が main で実行されているため、コミットが表示されているのだと思います。内部 CI で tests-passed のテストに問題が発生しましたが、30 分ほどで解決するはずです :crossed_fingers:

「いいね!」 1

これで表示されるはずです。もう一度試して、結果を @pfaffman さんに教えていただけますでしょうか。

「いいね!」 1

データベースを削除せずに bootstrap/deploy を実行しました。成功しました。

データベースを削除して bootstrap/deploy を実行しました。成功しました。

「いいね!」 1

アップデート中に画面が真っ白になるのは私だけですか?

コマンドラインから再構築する必要があるでしょう

このトピックは10時間後に自動的に閉じられました。返信はもうできません。