Контейнер Bootstrap зависает при запуске su discourse -c 'bundle exec rake db:migrate'

В настоящее время мы используем этот релиз:

Он всё ещё работает в нашем продакшн-контейнере (проблем нет).

Я пытаюсь выполнить загрузку (bootstrap) на основе этого релиза:

Я пробовал несколько раз сегодня, и каждый раз процесс зависает здесь:

Screen Shot 2021-02-11 at 5.32.24 PM

Я проверил логи в контейнере с данными и в контейнере standby-приложения (мы выполняем загрузку), но ошибок или проблем не обнаружено.

Каждый раз при загрузке процесс зависает на этой строке:

I, [2021-02-11T10:37:25.133098 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

Есть ли какие-либо подсказки, куда смотреть для отладки?

Я просмотрел все возможные логи (во всех контейнерах), но не нашёл проблем.

Спасибо.

Дополнительная информация:

Каждый раз, когда процесс зависает и я прерываю его с помощью Ctrl+C, остаётся процесс postmaster, который я могу затем завершить.

Вот пример:

Обновление:

Загрузка проходит успешно, если закомментировать строку “db:migrate” в шаблоне web.

Происходит что-то странное с “rails db:migrate”, которая зависает без каких-либо ошибок — такого я раньше не встречал.

Возможно, в этом последнем миграционном скрипте есть ошибка (или какая-то скрытая проблема)?

См. также:

Привет, @neounix, мы в курсе проблемы с миграцией, на которую вы сослались, и прямо сейчас работаем над исправлением.

2 лайка

Привет, @david

Спасибо за ответ!

Я только что посмотрел на миграцию, и моей первой мыслью, как «не эксперта по миграции базы данных Discourse», было то, что проблема может быть здесь?

 add_index :dismissed_topic_users, %i(user_id topic_id), unique: true

В любом случае, я не квалифицирован, чтобы углубляться в проблемы миграции Discourse, поэтому я отступаю и остаюсь на связи.

Ещё раз спасибо!

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

Сработало.

1 лайк

Привет, @neounix,

извини, что включил в кодовую базу такую тяжелую и нерабочую миграцию. Эти изменения были отменены, поэтому новое развертывание должно пройти без проблем:

4 лайка

Привет, @kris.kotlarek

Спасибо за обновление:

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

Только для сведения (просто для технической точности, извините за это…), я проверил базу данных сразу после пересборки, и процесс «отката» не удалил таблицу из БД. Ничего страшного, просто к сведению:

discourse=> \d dismissed_topic_users

                                        Таблица "public.dismissed_topic_users"
   Колонка    |            Тип             | Колляция | Не может быть пустой |                      Значение по умолчанию                      
------------+-----------------------------+-----------+----------+---------------------------------------------------
 id         | bigint                      |           | не null | nextval('dismissed_topic_users_id_seq'::regclass)
 user_id    | integer                     |           |          | 
 topic_id   | integer                     |           |          | 
 created_at | timestamp without time zone |           |          | 
Индексы:
    "dismissed_topic_users_pkey" PRIMARY KEY, btree (id)
    "index_dismissed_topic_users_on_user_id_and_topic_id" UNIQUE, btree (user_id, topic_id)

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

2 лайка

Эта миграция работает без сбоев, согласно последнему коммиту:

4 лайка

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