Зависло обсуждение, восстановление обсуждения НЕ УДАЛОСЬ

Я выполнил команду ./launcher rebuild app


redis is now ready to exit, bye bye ... зависло в Discourse — 40 минут, остановил через Ctrl + C

Оно постоянно загружается. В результате новый контейнер не был создан. Не могли бы вы объяснить, какие логи в Discourse помогут нам найти причину?

Не может ли это быть проблемой с распределением ресурсов?

Размещены ли на этом сервере какие-либо другие веб-сайты или службы? Сколько оперативной памяти и процессорного времени доступно на вашем сервере?

ресурсы сервера

Это нормально.

Это не нормально. Обычно новый контейнер запускается уже через меньше минуты после этого сообщения.

Вы пробовали это сделать более одного раза с тем же результатом?

да, несколько раз, с тем же результатом

Был на ветке 3d050bdaa31633a954758894629c0eb9fea537d0

Хочу обновиться до fe71c43c57c0248a8264245cb6ff0dc114da335a

и Discourse зависает!!

production.log

Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH). Подписка не удалась, повторная попытка через 1 секунду. Стек вызовов ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:139:in `block in call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:293:in `with_socket_timeout'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:138:in `call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:44:in `subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:13:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:3468:in `_subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2301:in `block in subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2300:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:287:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH). Подписка не удалась, повторная попытка через 1 секунду. Стек вызовов ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:125:in `call'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:915:in `block in get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:914:in `get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:360:in `process_global_backlog'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:271:in `block in global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:284:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
Исключение в задаче: Ошибка подключения к Redis на localhost:6379 (Errno::ENETUNREACH)

Создание области видимости :visible_groups. Переопределение существующего метода Group.visible_groups.
Создание области видимости :visible. Переопределение существующего метода Notification.visible.
Создание области видимости :public_posts. Переопределение существующего метода Post.public_posts.
Создание области видимости :private_posts. Переопределение существующего метода Post.private_posts.
Создание области видимости :open. Переопределение существующего метода Poll.open.
Миграция к CreateDiscourseVotingCategorySettings (20200727220143)
Миграция к CreateDiscourseVotingVotes (20200728222920)
Миграция к CreateDiscourseVotingTopicVoteCount (20200729042607)
Создание области видимости :visible_groups. Переопределение существующего метода Group.visible_groups.
Создание области видимости :visible. Переопределение существующего метода Notification.visible.
Создание области видимости :public_posts. Переопределение существующего метода Post.public_posts.
Создание области видимости :private_posts. Переопределение существующего метода Post.private_posts.
Создание области видимости :open. Переопределение существующего метода Poll.open.
Создание области видимости :visible_groups. Переопределение существующего метода Group.visible_groups.
Создание области видимости :visible. Переопределение существующего метода Notification.visible.
Создание области видимости :public_posts. Переопределение существующего метода Post.public_posts.
Создание области видимости :private_posts. Переопределение существующего метода Post.private_posts.
Создание области видимости :open. Переопределение существующего метода Poll.open.

Ubuntu 14.04, похоже, довольно устарела. За последние несколько недель я видел несколько сообщений о проблемах с ней:
https://meta.discourse.org/search?q=14.04%20order%3Alatest

Возможно, обновление какой-то зависимости между маем и сейчас что-то сломало :roll_eyes:

Спасибо за ответы.

У меня новый сервер с Ubuntu 20.04.1 LTS и установленным Docker.

Как мне перенести мой старый prod-forum на этот сервер?
Не могли бы вы предложить пошаговые инструкции?

Создайте с нуля, следуя обычной инструкции. Скопируйте app.yml. Пересоберите. Импортируйте файл резервной копии Discourse с первого сервера. Готово.

(И ещё небольшой нюанс: перенастройте IP для домена!)

Круто, но создание резервных копий через панель администратора у нас не работает))

перенос контейнера docker

docker ps -a

docker commit c559bec6f29a local_discourse/app
docker save local_discourse/app > /tmp/local_discourse_app.tar.gz
scp /tmp/local_discourse_app.tar.gz root@my-new-server:/tmp/
---
docker load < /tmp/local_discourse_app.tar.gz
docker run local_discourse/app

проблемы возникают на этом шаге - NoMethodError on docker run - #8 by Dev_Work

У вас нет существующих резервных копий за пределами сайта?

Мне нужна копия с актуальными данными (без свежих резервных копий)

Возникают ошибки при восстановлении резервной копии на новом сервере?

./launcher enter app
discourse restore discourse-2020-08-24-103334-v20200811004537.tar.gz

Привет, @Dev_Work

Извините, что слышим о проблемах, с которыми вы столкнулись.

Итак, давайте проверим:

  • Вы выполнили полное ручное резервное копирование вашего сайта, и эта резервная копия имеет имя:
discourse-2020-08-24-103334-v20200811004537.tar.gz
  • Затем вы установили Discourse с нуля, используя стандартный метод:
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
  • Вы сделали это на совершенно новом сервере Ubuntu 20.04.1 LTS с установленным и протестированным Docker.

  • После этого вы вручную восстановили систему из указанной выше резервной копии на новом сервере, верно?

Правильно ли я всё понял, и на этом этапе вы сейчас находитесь?

Спасибо за ответ.
Да, всё верно, проблема возникает на новом Ubuntu 20.04.1 LTS

Создали ли вы администратора с именем пользователя «pavel_BLANKEDOUT» перед попыткой выполнения процесса ручного восстановления Discourse?

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

Нет, не создавал.

Пользователь администратор отсутствует в резервной базе данных.

Привет, @Dev_Work

А как насчёт вашего оригинального сайта, где резервная копия, которую вы используете, полностью недоступна?

Или вы можете зайти в контейнер вашего старого сайта и проверить базу данных Discourse на наличие повреждённого индекса?

Также, какая версия PostgreSQL работала на вашем старом нерабочем экземпляре? 10 или 12?

Звучит как моя проблема: Search results for 'could not create unique index category:6' - Discourse Meta

плачу :frowning:

ERROR:  could not create unique index "index_user_emails_on_email"
DETAIL:  Key (lower(email::text))=(andrii_test@local.com) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (lower(email::text))=(andrii_test@local.com) is duplicated.
/var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

Старый сервер использовал PostgreSQL 12

Старый сайт и сервер работают

Я могу зайти в контейнер старого сайта (как проверить повреждённый индекс?)