"Zlib::BufError: ошибка буфера" — обновление Discourse не удалось

Имя плагина — 'discourse-education-group-custom-fields', но директория плагина названа 'discourse-group-custom-fields' 
Очистка временных файлов                                     
Сборка активов                                           
I, [2024-06-10T06:41:22.964825 #1211]  INFO -- : Запись /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
I, [2024-06-10T06:41:22.986328 #1211]  INFO -- : Запись /var/www/discourse/public/assets/service-worker-5ed284060464db53e2bfcd15aca57982a183382ef3e0c86921be9a2ac5ecc196.js
I, [2024-06-10T06:41:22.993446 #1211]  INFO -- : Запись /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
I, [2024-06-10T06:41:22.997323 #1211]  INFO -- : Запись /var/www/discourse/public/assets/scripts/discourse-test-listen-boot-9b14a0fc65c689577e6a428dcfd680205516fe211700a71c7adb5cbcf4df2cc5.js
rake aborted!                                                                                                          
Zlib::BufError: ошибка буфера (Zlib::BufError)                                                                          
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `<<'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:212:in `set'

...

ОШИБКА
--------------------
Pups::ExecError: команда cd /var/www/discourse && su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' завершена с ошибкой, код возврата #<Process::Status: pid 1209 exit 1>
Место возникновения ошибки: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
выполнение завершено с ошибкой с параметрами {"cd"=>"$home", "tag"=>"precompile", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'"]}
загрузка завершена с кодом выхода 1
** СБОЙ ПРИ ЗАГРУЗКЕ ** пожалуйста, прокрутите вверх и найдите предыдущие сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.

В последнее время поступило несколько сообщений о подобной ошибке:

Cannot build on arm, Zlib::BufError during assets:precompile
Rebuild fails when these plugins are present

Не уверен, что точная причина уже найдена, но в одном случае, как полагали, виноваты Animated Avatars, а в другом — Subscriptions (хотя Subscriptions у меня собираются без проблем).

Я не использую эти плагины:

   2   │ discourse_plugins:
   3   │   - https://github.com/discourse/docker_manager
   4   │   - https://github.com/discourse/discourse-rss-polling
   5   │   - https://github.com/discourse/discourse-chat-integration
   6   │   - https://github.com/discourse/discourse-yearly-review
   7   │   - https://github.com/discourse/discourse-perspective-api
   8   │   - https://github.com/discourse/discourse-policy
   9   │   - https://github.com/discourse/discourse-shared-edits
  10   │   - https://github.com/discourse/discourse-akismet
  11   │   - https://github.com/discourse/discourse-solved
  12   │   - https://github.com/discourse/discourse-user-notes
  13   │   - https://github.com/discourse/discourse-templates
  14   │   - https://github.com/discourse/discourse-assign
  15   │   - https://github.com/discourse/discourse-docs
  16   │   - https://github.com/discourse/discourse-encrypt
  17   │   - https://github.com/discourse/discourse-cakeday
  18   │   - https://github.com/discourse/discourse-calendar
  19 _ │   - https://github.com/discourse/discourse-data-explorer
  20   │   - https://github.com/kees-closed/discourse-group-custom-fields
  21   │   - https://github.com/discourse/discourse-activity-pub

Я использую MaxMind, так что, возможно, в этом и проблема. Я также закомментировал плагин, не относящийся к Discourse. Это не решило проблему, поэтому я не думаю, что она вызвана неофициальным плагином.

Я также перезагрузил хост контейнера, но это не повлияло на результат сборки. В прошлом проблема с сетью решалась перезагрузкой.

Вы пробовали пересобрать без него?

Моё лучшее объяснение на данный момент — какая-то случайная ошибка, связанная с MaxMind. Но, взглянув ещё раз на некоторые из ошибок, это тоже не имеет смысла.

У меня только что возникла эта проблема при обновлении установки Discourse…

Полагаю, причина в том, что в файле контейнера .yml указано DISCOURSE_MAXMIND_LICENSE_KEY, но отсутствует соответствующий DISCOURSE_MAXMIND_ACCOUNT_ID.

В запросе на слияние от @tgxworld добавлено использование DISCOURSE_MAXMIND_ACCOUNT_ID в нескольких местах и объяснена необходимость наличия «Account ID»:

Для меня исправление заключалось в добавлении DISCOURSE_MAXMIND_ACCOUNT_ID и повторной сборке (я собирал дважды, но это, скорее всего, была временная проблема).

Недавняя пересборка прошла успешно. Если снова возникнет сбой, я изучу предложение @DeanMarkTaylor. Спасибо всем!

Кстати, у меня возникла ошибка пересборки Zlib::BufError: buffer error (Zlib::BufError), и после добавления DISCOURSE_MAXMIND_ACCOUNT_ID пересборка прошла успешно с первого раза. :+1:

То же самое. Добавление ID аккаунта и пересборка снова работают. :slight_smile:

Когда была выпущена версия 3.3.0.beta3, я столкнулся с этой ошибкой непоследовательно: один раз она возникала, а затем пересборка проходила успешно. (Не найдя этот пост, я беспокоился о повреждении памяти! :grimacing:) Сегодня вечером при выполнении пересборки ошибка возникала стабильно, пока я не нашёл этот пост и не добавил DISCOURSE_MAXMIND_ACCOUNT_ID к уже существующему DISCOURSE_MAXMIND_LICENSE_KEY, после чего пересборка стала стабильно успешной.

(Я предполагаю, что MaxMind выпустил обновление с использованием стратегии blue/green, и ранее я каждый раз попадал на разные версии бэкенд-сервиса…)

Пересборка только что не удалась из-за строк MaxMind. До этого всё работало, и при отсутствии изменений в app.yml сейчас снова произошла ошибка. Значит, сломалось что-то более существенное.

В любом случае, мне это не нужно в рамках Discourse, поэтому я оставил это закомментированным. Но совершенно точно, что проблема не только в account_id.

Согласен. Моя пересборка не удалась, даже когда DISCOURSE_MAXMIND_ACCOUNT_ID был установлен в app.yml.

Как только я закомментировал все упоминания Maxmind, пересборка прошла успешно.