本番サイトのフロントエンドがダウン -- Ember/Test エラー

私のディスコースインスタンスのフロントエンドが完全に空白になり、新しいアップグレード後に読み込めなくなりました。これは良くないことで、ユーザーが不満を抱いているため、少しパニックになっています。バックエンドは稼働しているようです。

これは本日、コンテナを実行しているデジタルオーシャンドロップレットで、最新のアップグレード後​​に発生しました。アプリを再構築するためにランチャーを使用しました。

どのような助けでも深く感謝します。

コンソールエラーは次のように表示されます。

app.js:31
Uncaught TypeError: Cannot read properties of undefined (reading 'registerAsyncHelper')    at s.callback (vendor-suffix.js:58:1)
    at s.exports (loader.js:106:1)
    at s._reify (loader.js:143:1)
    at s.reify (loader.js:130:1)
    at s.exports (loader.js:104:1)
    at s._reify (loader.js:143:1)
    at s.reify (loader.js:130:1)
    at s.exports (loader.js:104:1)
    at s._reify (loader.js:143:1)
    at s.reify (loader.js:130:1)
    at s.exports (loader.js:104:1)
    at requireModule (loader.js:27:1)
    at n._prepareInitializer (app.js:24:1)
    at app.js:81:1
    at Array.forEach (<anonymous>)
    at n.start (app.js:73:1)
    at HTMLDocument.<anonymous> (start-app.js:4:1)
    at discourse-boot.js:30:1
    at discourse-boot.js:31:1
「いいね!」 3

HTMLはすべて正常に読み込まれていますが、Emberアプリで問題が発生しています…

エラーが発生しているコードを見ると、Ember.Application.extend が何らかの理由でエラーをスローしているようです。

  var Discourse = Ember.Application.extend({
    rootElement: "#main",
    customEvents: {
      paste: "paste"
    },
    Resolver: (0, _resolver.buildResolver)("discourse"),
    _prepareInitializer: function _prepareInitializer(moduleName) {
      var themeId = moduleThemeId(moduleName);
      var module = null;

      try {
        module = requirejs(moduleName, null, null, true);

        if (!module) {
          throw new Error(moduleName + " must export an initializer.");
        }
      } catch (error) {
        if (!themeId || (0, _environment.isTesting)()) {
          throw error;
        }

原因はこの条件文のようです: !themeId || (0, _environment.isTesting)()

「いいね!」 1

うーん…プラグインでした…どれかは分かりませんが、ここで少し調べてみたところ、それが問題だったのではないかと疑われました…cakeday、signatures、data explorer、discourse-video-upload、encryptionを削除しました。後で一つずつ導入して、原因を特定できるか試してみます。しかし、今はアプリが復旧したので、もう触りません。

ひどい経験でした。今はかなり罪悪感を感じています…将来的には、これらのアップグレードのためにステージングクローンプロセスを持つべきだったかもしれません。教訓になりました。あるいは、少なくとも失敗時に復元できるように、アップグレード前に常にスナップショットを作成します。

「いいね!」 3

問題はDiscourse encryptです。これをymlファイルの最後に配置し、破損する前のコミット(署名検証が先日破損しました)を選択することで修正できます。以下のようになります。

  - git clone https://github.com/discourse/docker-manager.git
  ... その他のプラグイン ...
  - git clone https://github.com/discourse/discourse-encrypt.git
  - cd discourse-encrypt && git checkout 12639de

ご覧のとおり、cdgit checkoutコマンドが後続のコマンドに影響を与える可能性を考慮して、Discourse encryptプラグインを最後に配置しました(影響はないと思いますが)。

そしてはい、これは確実に動作する最後のバージョンのコミットハッシュです。

私のサイトは正常に動作するようになりました。Discourse Encryptにも緑色のチェックマークが表示されています。

「いいね!」 6

@TomSSL この問題の分析をありがとうございます。

@sam 明日、フルスタックエンジニア職に応募します。壊れたプラグインを追いかける間に、チームに参加してプラグインに取り組んでみようと思います :slight_smile:

直接メッセージを送りたいのですが、このインスタンスでは許可されていません。

「いいね!」 3

Current Openings | Discourse - Civilized Discussion を参照してください :slight_smile:

「いいね!」 1

この設定を長時間そのままにしておかないでください。インスタンスはEncryptプラグインの将来のアップデートを受け取ることができなくなります。これは将来的に問題を引き起こす可能性が非常に高いです。

署名検証の問題については認識しており、修正に取り組んでいます 修正をプッシュしました

しかし、このEmber.Testエラーは予期せぬものです。@Mycobee、実行しているDiscourseのバージョンを確認していただけますか?アップデートはどのように実行しましたか?/admin/upgrade UI経由ですか?

「いいね!」 4

はい、これは非常に重要で、言及するのを忘れていました(書いたのは私の時間の午前4時近くで、ちょうど再び動作するようになり、他の誰かが同じ問題を抱えているかどうかを確認するためにここに来ました)。*これは、再び動作するようにするための応急処置にすぎません。*リマインダーをありがとう、@david

本日午前0時(UTC)(10時間半前)にすべてを更新したとき、その修正は私には機能しませんでした。署名検証が修正されたのを見たので、その時にのみインスタンスを更新しました。その後、上記で説明した応急処置を行う必要がありました。私の通常のアップデートが何らかの理由で最新のコードを取得できなかったということはありえますか?

「いいね!」 2

署名検証のエラー:x:はまだ表示されていましたか?それとも Ember.Test の問題に遭遇しましたか?

また、チームと確認したところ、Ember.Test の問題は特定されており、まもなく修正される予定です。利用可能になり次第、こちらで更新します。

「いいね!」 2

フロントページが真っ白になり、サイトを読み込めるようにするには、すべてのプラグインを無効にする(セーフモードで)必要がありました。毎週月曜日のUTC 9:00頃に週次アップデートを行っていますが、これは署名検証の問題を修正するための追加のアップデートでした。しかし、もちろん、他にもかなりの変更が検出されました。その間にバージョンも 2.9.0beta3 に上がりました。

すでに確認されているかもしれませんが、まだ確認していない方のために、現在実行中のバージョンと、このメッセージ時点での最新バージョンとの間のDiscourse Encryptの差分をここに示します。

また、修正に午前4時近くまでかかったわけではありません。午前2時少し前にはすべて順調でしたが、その後、何が起こったのかを人々に伝える必要がありました(ユーザーのほとんどは米国にいます)。

「いいね!」 2

この問題は、Discourse コアのこのコミットで修正されるはずです。

そのため、Discourse を最新バージョンに更新すれば、discourse-encrypt を最新バージョンに更新しても安全になるはずです。

「いいね!」 5

それはうまくいきました。アップグレードは問題なく実行されます。

「いいね!」 3

@david 2.9.0.beta3にアップグレードしたところ、問題が発生しました。

アップグレードプロセスについては、通常/admin/upgrade UI経由で行っています。今回は状況が異なりました。

アップグレードUIからdocker-managerのみをアップグレードしました。その後、他のことをいくつか処理する必要があったため、数時間後に/admin/upgradeパスにアクセスしてアップグレードプロセスを完了しました。

ホストに移動し、/var/discourseディレクトリに変更し、git pullを実行し、./launcherでアプリを再構築するように指示するテキストページが表示されました。そこで、その通りに実行したところ、混乱が生じました。

ストレスと緊張が高まる中、このフォーラムでキャッチされないTypeErrorがプラグインに関連しているという情報を見つけたため、app.ymlプラグインから必須でないものをすべて削除し、コンテナを再構築しました。その時点で、emberアプリは再び動作するようになりました。

「いいね!」 1

このトピックは2日後に自動的に閉じられました。返信はもう許可されていません。