ログペインがアップデート中に更新を停止する

2.7.0.beta6 へのアップデートを 2 つのフォーラムで行いました。1 つ目は、Docker Manager と Discourse を順にアップデートし、スムーズに完了しました。もう 1 つは、Data Explorer のアップデートも必要だったため、Discourse の最終的なアップデート中にログペインが 2 回停止しました。どちらも Waiting for Unicorn to reload........... の状態で止まっており、1 回目は開始時、2 回目はブラウザタブをリフレッシュした後の終了時でした。

終了時の停止では、11 行の「Waiting」メッセージが表示された後に止まりました。

Done compiling CSS: 2021-04-08 12:54:13 UTC
Restarting unicorn pid: 49
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Waiting for Unicorn to reload........
Waiting for Unicorn to reload.........
Waiting for Unicorn to reload..........
Waiting for Unicorn to reload...........

開始時の停止も同程度の行数で止まっていました。

別のタブで「Processes」ページからプロセスを監視することができ、進行状況が確認できました。

アップグレードは成功し、リフレッシュ後はログ全体を確認できましたが、ログペインが更新を停止していたことは不安を招き、誤解を招く可能性もありました。

JavaScript コンソールからは特に報告すべき事象はありませんでした。

ああ、長い間ぶりですが、JS コンソール(Mac の Chrome)に何か表示されました。

[Violation] 'setTimeout' handler took 64ms

docker-manager-vendor-970…js の 5211 行目へのリンクが含まれており、これは /assets/docker-manager-vendor-9709990270a4ade37544c98dda3cfad18f77cdf6cd433291c3c5ef7bd25cb50d.js を指しています。

その内容は以下の通りです。

try{r||n?t=s.minPollInterval:(t=s.callbackInterval,o>2?t*=o:a()||(t=s.backgroundCallbackInterval),t>s.maxPollInterval&&(t=s.maxPollInterval),(t-=new Date-w)<100&&(t=100))}catch(i){console.log&&i.message&&console.log("MESSAGE BUS FAIL: "+i.message)}d&&(clearTimeout(d),d=null),u&&(d=setTimeout((function(){d=null,e()}),t)),s.longPoll=null}})}},s={minHiddenPollInterval:1500,enableChunkedEncoding:!0,enableLongPolling:!0,callbackInterval:15e3,backgroundCallbackInterval:6e4,minPollInterval:100,maxPollInterval:18e4,callbacks:n,clientId:i,alwaysLongPoll:!1,baseUrl:"/",headers:{},ajax:p&&p.ajax,noConflict:function(){return e.MessageBus=e.MessageBus.previousMessageBus,this},diagnostics:function(){console.log("Stopped: "+l+" Started: "+u),console.log("Current callbacks"),console.log(n),console.log("Total ajax calls: "+O+" Recent failure count: "+o+" Total failures: "+R),console.log("Last ajax call: "+(new Date-w)/1e3+" seconds ago")},pause:function(){f=!0},resume:function(){f=!1,T(h),h=[]},stop:function(){l=!0,u=!1,v&&(clearTimeout(v),v=null),s.longPoll&&s.longPoll.abort()},start:function(){var r

システムがメモリ不足になった可能性があります。

コンソールから再ビルドを試みていただけますか?

「いいね!」 1

アップグレードは正常に完了しました。問題が発生しているのは、ブラウザでのログストリームの表示部分です。ページをリフレッシュすると、ログ全体が表示されました。したがって、これはアップグレードや再構築、あるいはサーバー側の問題ではなく、クライアント側の問題であると確信しています。

もし他に誰もこの問題に遭遇しないのであれば、私のブラウザまたはラップトップの問題として片付けても構いません。

ブラウザで表示される JavaScript がソースツリーとどのように関連しているのかは理解していませんが、もしかするとこれはコンソールでリンクされていたコードかもしれません(これは最近変更されていないコードです)。

私が管理している一部のサイトでは同じ問題に直面しましたが、すべてのサイトではないため、設定上の問題のようです。確実な証拠はまだありませんが、私の最も妥当な推測では、マルチサイトに関連する何かではないかということです。

ここでの有用な情報がないことをお詫びしますが、この問題があなた固有のものではないことを確認するために、一言添えさせていただきました。

「いいね!」 1

ありがとうございます、興味深くて役立ちますね。私はまだマルチサイト設定にしていません(2つのフォーラムは異なるホストにあります)。したがって、マルチサイト設定と非マルチサイト設定の両方でこれを確認できます。

2.7.0.beta9 へのアップデートで、再び同じ現象が発生しました。ログストリームは「ユニコーンの停止中」と表示されたまま停止した状態でしたが、別タブで開いたプロセスビューでは precompile が開始されていることが確認できました。

回避策として、バージョン表示タブを開き、「現在アップグレード中」とラベル付けされた大きな青いボタンをクリックして進めると、正しく更新される新しいログビューを取得することができました。