Проблема с восстановлением: [Невозможно включить dual-stack в сочетании с пользовательским endpoint.]

Привет :wave:

Не удается выполнить пересборку из-за следующей ошибки.

I, [2024-11-07T08:00:56.758061 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)

          raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 3349 exit 1>

Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'

exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}

bootstrap failed with exit code 1

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

./discourse-doctor may help diagnose the problem.

567dc9e1f9a4e662de6024b8504915d8b6ef1ee2d9b4303af75323ba478679e4

Вероятно, это связано с коммитом: FIX: Use dualstack S3 endpoint for direct uploads (#29611) · discourse/discourse@0568d36 · GitHub

Я использую загрузку в DO Spaces через объектное хранилище S3. Проблема, скорее всего, связана с этим.

Спасибо :slight_smile:

1 лайк

Я закомментировал эти строки, из-за чего пересборка проходит успешно, но сайт зависает на загрузочном экране, вероятно, потому что не может загрузить ресурсы. :thinking: В безопасном режиме то же самое…

  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Есть какие-то идеи? Понимаю, что время выбрано неудачно… :confused:

1 лайк

Привет, Дон, мы посмотрим. Спасибо, что сообщил.

1 лайк

Спасибо, Натальи :hugs:

Для быстрого исправления я собрал версию на основе cc01555fce59e116b76c912b4c5195e111a652b2, которая отстаёт на один коммит от этой: FIX: Use dualstack S3 endpoint for direct uploads (#29611) · discourse/discourse@0568d36 · GitHub

2 лайка

Мой процесс пересборки с настройкой Digital Ocean Spaces S3 начал завершаться ошибкой с следующим сообщением:

, [2024-11-07T19:09:38.615466 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets                                                   
rake aborted!                                                                                                                                                                     
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)
                                                                                         
          raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."                                                                                     
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/endpoint_provider.rb:34:in `resolve_endpoint'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/endpoints.rb:37:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/endpoint.rb:47:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/param_validator.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'

Однако, если не задавать значение whatever, сборка завершается ошибкой так:

                                                                                         
I, [2024-11-07T19:15:31.060936 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets                                                   
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars              
I, [2024-11-07T19:15:36.056204 #1]  INFO -- :                                            
                                                                                         
                                           

Я нашёл это:

и это:

Возможно, переменную S3_REGION следует очищать, если указан endpoint здесь?

EDIT: Ой. Мне казалось, я уже искал. Извините, Falco.

1 лайк

Странно, но это выдает мне такую ошибку:

Gem::LoadError: can't activate webrick-1.9.0, already activated webrick-1.8.2 (Gem::LoadError)

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

Кажется, я просто не могу обновить этот сервер прямо сейчас. :frowning:

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

А сразу после этого попробуйте выполнить пересборку, выбрав конкретный коммит. Второй запуск пересборки прошёл успешно.

1 лайк

@martin Обычно мы здесь предоставляем GlobalSetting, чтобы отключить поведение, которое затем можно включить для обеспечения работы несовместимых клонов S3.

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

См. предыдущий опыт в DISCOURSE_S3_HTTP_CONTINUE_TIMEOUT, DISCOURSE_S3_INSTALL_CORS_RULE и т. д.

3 лайка

Ах, извините, моя вина, ребята. Эти клоны S3 всегда вылетают у меня из головы. Вчера мне как раз пришлось решать проблему с кастомной конечной точкой в Minio. Думаю, решение здесь простое: никогда не использовать dualstack, если задана переменная DISCOURSE_S3_ENDPOINT, так как они несовместимы. А судя по всему, все здесь используют именно её.

3 лайка

Я уже применил исправление для этого:

4 лайка

Спасибо за быстрое исправление! Я снова в строю. :tada:

Спасибо за ясное объяснение, Рафаэль!

Это потому, что нужно держать в голове множество вещей! И, я думаю, спецификационные тесты потребовали бы тех надоедливых stub_request, которые я, как известно, ненавижу писать.

Только для информации, мне это кажется правильным. И вы, вероятно, могли бы написать для этого тесты, которые не требовали бы заглушек для stub_request.

1 лайк

10 сообщений были перенесены в новую тему: Невозможно выполнить резервное копирование или перейти к резервным копиям

Я не думаю, что это следует помечать как fixed.

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

Это наводит меня на мысль, что спецификации недостаточно широки, чтобы охватить все реальные случаи использования, и проходят изменения, которые не должны были проходить?

4 лайка

Похоже, что исправление работает только для сайтов, у которых включена опция use_s3, но не для тех, кто использует S3 исключительно для резервного копирования.

Восстановление возможно, но резервные копии в S3 не работают. :crying_cat_face:

3 лайка

Проблема с резервным копированием решена здесь Unable to backup or navigate to backups - #20 by martin

3 лайка

Эта тема была автоматически закрыта через 3 дня после последнего ответа. Новые ответы больше не принимаются.