日志窗格在更新期间停止更新

正在将两个论坛更新到 2.7.0.beta6。其中一个更新过程很顺利,先更新了 Docker 管理器,然后是 Discourse。另一个论坛还需要更新数据探索器(data explorer),我在 Discourse 最终更新过程中发现日志面板两次卡住。两次都卡在Waiting for Unicorn to reload...........阶段:一次在开始时,另一次在我刷新浏览器标签页后在结束时。

结束时的卡住现象在停滞前已输出了 11 行“等待”信息:

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...........

开始时的卡住也发生在大约相同行数。

我可以通过另一个标签页中的“进程”页面监控进程,并看到进度确实在推进。

升级最终成功,刷新后我可以查看并审核完整日志,但日志面板停止刷新确实令人不安,甚至可能产生误导。

JavaScript 控制台方面没有任何异常报告。

啊,过了好长一段时间,我在 JS 控制台(这是 Mac 上的 Chrome)看到了一条信息:

[Violation] 'setTimeout' 处理函数耗时 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

可能是您的系统内存不足或其他原因。

能否尝试从控制台重新构建?

请注意,升级已成功:问题出在浏览器对日志流的呈现上。刷新后,整个日志都可见了。因此,我非常确定这是一个客户端问题,而非升级、重建或服务器端的问题。

如果其他人从未遇到过这种情况,我很乐意将其归结为我自己的浏览器或笔记本电脑的问题。

我不太清楚浏览器看到的 JS 与源代码树之间的关系,但这可能是我在控制台中看到链接的代码(这段代码最近没有更改):

我在管理的部分网站上遇到过相同的问题,但并非所有网站都如此,因此这似乎是一个配置问题。我目前还没有确凿的证据,但根据我的判断,这可能与多站点设置有关。

很抱歉,我这里没有提供任何有用的信息,但我只是插话确认一下,这个问题并非仅出现在您身上。

谢谢,这很有趣且实用。我目前还没有多站点设置——我的两个论坛位于不同的主机上。因此,多站点和非多站点设置都能看到此内容。

刚刚在升级到 2.7.0.beta9 时又遇到了这个问题:日志流一直显示正在停止 Unicorn 进程,而(在另一个标签页中打开的)进程视图却显示预编译(precompile)已经启动。

作为临时解决方案,我打开了版本视图标签页,看到那个标有“正在升级”的大蓝色按钮,点击后成功获取了新的日志视图,该视图现在能正确更新。