Панель журнала перестает обновляться во время обновления

Просто обновлял два форума до версии 2.7.0.beta6. Один из них обновился без проблем: сначала обновил Docker Manager, а затем Discourse. Второй форум, которому также требовалось обновление Data Explorer, дважды зависал в панели логов во время финального этапа обновления самого Discourse. В обоих случаях процесс зависал на фразе
Waiting for Unicorn to reload...........
— один раз в начале и один раз в конце, после того как я обновил вкладку браузера.

При зависании в конце было записано 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 (это Chrome на Mac)

[Violation] 'setTimeout' handler took 64ms

со ссылкой на строку 5211 файла docker-manager-vendor-970…js, то есть /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: поток логов просто висел, показывая остановку юников, тогда как в представлении процессов (открытом в другой вкладке) было видно, что precompile уже запустился.

В качестве обходного решения я открыл вкладку с представлением версий, увидел большую синюю кнопку, теперь подписанную как «В настоящее время обновляется», нажал на неё и успешно получил новое представление логов, которое корректно обновлялось.