Пересборка всегда завершается неудачей, когда исчерпан дневной лимит MAXMIND

Восстановление всегда завершается неудачей, когда исчерпан дневной лимит. Думаю, стоит исправить это, так как я потерял два дня и дважды настраивал сервер, пока не выяснил причину проблемы. Возможно, я не очень умён :slight_smile:

По-моему, при исчерпании дневного лимита нужно пропустить этот шаг и продолжить процесс восстановления.

4 лайка

Да. Это огромная проблема, что ошибка в MaxMind приводит к сбою пересборки. Похоже, на их хостинге база данных каким-то образом разделяется между экземплярами.

Я не знал о дневном лимите, но это, безусловно, объясняет те ошибочные ошибки, которые я наблюдал. Единственное решение — отключить MaxMind для выполнения пересборки.

Я несколько раз изучал код, пытаясь найти решение, но пока не сделал этого. Это должно быть исправление в 1–3 строки.

Поскольку вы наконец определили, что проблема заключается в ограничении скорости с их стороны, я меняю метку этой задачи на :bug:

5 лайков

Я отключил MAXMIND, перекомпилировал, и всё заработало. Однако я хотел сообщить об этом, так как подумал, что это может случиться и с другими. Спасибо за ваш интерес, удачи.

2 лайка

Вот тривиальное, но, вероятно, эффективное решение этой проблемы:

Поскольку я точно не знаю, как воспроизвести проблему, протестировать код непросто, но он должен сработать.

1 лайк

Сегодня вечером я займусь этой задачей и, если найду информацию об ошибке, обновлю тему. Спасибо за ваше время, думаю, это будет полезно.

Проводилось ли уже исследование по этой теме? Потому что я только что попробовал, и компиляция всё ещё не удаётся, когда включён MAXMIND, и мне пришлось его отключить, чтобы скомпилировать. Возможно, это поможет: я также вижу ошибку zlip.

НЕ ТО:
Кажется, я неправильно ввёл лицензионный ключ в app.yml. Я исправил это и попытался скомпилировать снова. Однако, даже если ключ недействителен или лимит исчерпан, компиляция должна продолжаться без выдачи ошибок.

1 лайк

Для этой ошибки вы также добавили DISCOURSE_MAXMIND_ACCOUNT_ID в свой app.yml?

2 лайка

Можете предоставить полные логи?

1 лайк

Если я столкнусь с этой ошибкой снова, я поделюсь логами ошибок, но она такая же, как в ссылке, которую вы предоставили.

С другой стороны, при неправильном ключе компиляция выдаёт ошибку. Поэтому было бы разумно, чтобы эта функция продолжала работать и выдавала предупреждение, если ключ или идентификатор неверны.

Что ж, похоже, это не работает, хотя я почти уверен, что ключ MaxMind валидный. Думаю, раз у меня несколько сайтов на одном IP-адресе, которые все запрашивают базу данных, я упираюсь в лимиты запросов?

...
Проверка 'Guest Gate Theme Component' для 'default'... актуально
Проверка '* Official: discourse-search-banner' для 'default'... актуально
Проверка '* Official: Header submenus' для 'default'... актуально
Проверка '* Auto linkify words (official)' для 'default'... актуально
Проверка '* Official: New PM Dropdown Button (KED)' для 'default'... актуально
Проверка 'Sidebar Theme Toggle' для 'default'... актуально
Загрузка MaxMindDB...



ОШИБКА
--------------------

                                                                                                                                     
Имя плагина 'DiscourseAddToSummary', но имя директории плагина 'discourse-add-to-summary'                                                     
Очистка временных файлов                                                                                                                                   
Упаковка ассетов                                                                                                                                      
I, [2024-07-03T15:34:03.558862 #1728]  INFO -- : Запись /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322
bf777d145fed04790e.js                                                                                                                                
I, [2024-07-03T15:34:03.565737 #1728]  INFO -- : Запись /var/www/discourse/public/assets/service-worker-1c2f90c0e9ecfcf748d58ed6c37a510b3cd246299fcf
a5917a060293f1affb92.js                                                                                                                              
I, [2024-07-03T15:34:03.568027 #1728]  INFO -- : Запись /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e
78722e6f99d3656137.js                                                                                                                                
I, [2024-07-03T15:34:03.569522 #1728]  INFO -- : Запись /var/www/discourse/public/assets/scripts/discourse-test-listen-boot-9b14a0fc65c689577e6a428d
cfd680205516fe211700a71c7adb5cbcf4df2cc5.js                                                                                                          
I, [2024-07-03T15:34:04.079476 #1728]  INFO -- : Запись /var/www/discourse/public/assets/locales/ar-583c921ae692b1e7c988997efcba99e6b41b62572682166e
2c62bae0caeaab2b.js                                                                                                                                  
I, [2024-07-03T15:34:04.373049 #1728]  INFO -- : Запись /var/www/discourse/public/assets/locales/be-ee1a0dd42713e1ca29dbacea5dcde76c51a441cb634c5d61
7ba4b20bb7ef5b05.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'                                                 
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:136:in `set'                                                 
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:243:in `store_asset'                                        
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:185:in `load_from_unloaded'                                 
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:60:in `block in load'                                       
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'                  
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:44:in `load'                                                
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:20:in `block in initialize'                     
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:47:in `load'                                    
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:66:in `find_asset'                                            
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:73:in `find_all_linked_assets'                                
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:134:in `block in find'                                    
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `each'                                             
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `find'                                             
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:186:in `compile'                                          
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define'                
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/rake/sprocketstask.rb:147:in `with_logger'                                      
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define'                
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'                                                       
/usr/local/bin/bundle:25:in `load'                                                                                                                   
/usr/local/bin/bundle:25:in `<main>'                                                                                                                 
Задачи: TOP => assets:precompile                                                                                                                      
(Полный трассировочный отчет можно получить, запустив задачу с флагом --trace)                                                                                                        
I, [2024-07-03T15:34:04.978774 #1]  INFO -- : Проверка 'Add(back) Category Colmn (TH)' для 'default'... актуально                                   
Проверка '* Official: discourse-placeholder-theme-component (JP)' для 'default'... актуально                                                        
Проверка '* Discourse Easy Footer (Official)' для 'default'... актуально                                                                            
Проверка 'discourse-user-field-prompt' для 'default'... актуально                                                                                   
Проверка '* Rotate Global Banner(JP)' для 'default'... актуально                                     
Проверка 'Guest Gate Theme Component' для 'default'... актуально                                                                                    
Проверка '* Official: discourse-search-banner' для 'default'... актуально                                                                           
Проверка '* Official: Header submenus' для 'default'... актуально                                                                                   
Проверка '* Auto linkify words (official)' для 'default'... актуально                                                                               
Проверка '* Official: New PM Dropdown Button (KED)' для 'default'... актуально                                                                      
Проверка 'Sidebar Theme Toggle' для 'default'... актуально                                                                                          
Загрузка MaxMindDB...                                                                                                                             
                                                                                                                                                     
                                                                                                                                                     
                                                                                                                                                     
ОШИБКА                                                                                                                                               
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' завершилась ошибкой с кодом возврата #<Process::Status: pid 1726 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 bund
le exec rake themes:update assets:precompile'"]}
Загрузка не удалась с кодом выхода 1
** СБОЙ ЗАГРУЗКИ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

Последующая пересборка с закомментированным ключом и ID MaxMind прошла успешно.

Почему это так сложно?

Вот лимит из

Я не совсем понимаю, как я могу достигать этих лимитов, но это единственное объяснение, кроме случайных простоев на их серверах?

1 лайк

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

Похоже, существует также лимит на один IP-адрес.

4 лайка

Это огромная помощь. Я никогда не видел этого письма.

Возможно, я смогу что-то сделать, чтобы несколько серверов на одном IP-адресе не делали этого, но невозможность пересоздать дважды в день кажется довольно сложной задачей. Думаю, единственный вариант, который я могу придумать, — это кэширующий прокси.

Я был бы рад заплатить им какую-то сумму, чтобы это перестало быть проблемой, но не вижу способа это сделать.

1 лайк

Но это что-то другое, кроме ограничений скорости, потому что после создания образа я установил значения в /var/www/discourse/config/discourse.conf, выполнил задачу rake, и база данных загрузилась без проблем.

Может ли база данных находиться в постоянном хранилище?

Может ли база данных загружаться только после запуска образа?

1 лайк

@JammyDodger, удалось ли вам собрать проект с использованием MaxMind после последнего релиза? @RGJ — у вас возникли какие-либо проблемы?

Кажется, ни один из сайтов, которые я пробовал с MaxMind, не работал. А тот, который я настраивал вчера, смог загрузить базу данных с помощью задачи rake, после того как я зашёл внутрь контейнера и отредактировал конфигурацию, используя те же настройки, из-за которых сборка (bootstrap) не удалась.

Было уже несколько других тем, посвящённых сбоям из-за MaxMind.

На днях у меня не удалось выполнить пересборку, даже с ID аккаунта Maxmind, но вторая попытка сразу после этого прошла успешно.

1 лайк

У нас не возникло никаких проблем (хотя мы используем собственную систему развёртывания).

Я только что попробовал и смог загрузить файл 10 раз с одного и того же IP-адреса (после чего я прекратил попытки).

Так что моё «решение», призванное предотвратить сбой пересборки из-за ошибки, не сработало.

Так что это будет очень сложно отладить.

У меня была такая же проблема с электронной почтой после переноса некоторых форумов на новый сервер — поэтому согласен с автором темы: возможно, стоит добавить опцию для перестройки или попытаться получить базу данных до начала перестройки, предоставив нам возможность «попробовать снова» или «перестроить без MaxMind».

2 лайка

Кстати, недавнее изменение, требующее теперь ключ API и имя пользователя вместо только ключа API, также привело к сбою нашего обновления/пересборки, что вызвало несколько дней простоя.

Согласен с другими: отключение/комментирование в app.yml >> rebuild исправило проблему. Мы пока не включили это обратно, так как ждем, каким будет исправление.

У вас есть сообщение об ошибке, указывающее, на каком этапе произошла неудача при перестройке?

1 лайк