Полный краш форума (тестовый запуск)

Мой форум упал во время обновления программного обеспечения и теперь полностью исчез. Я получаю следующие сообщения об ошибках…

" Ой

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

Подробная информация об ошибке была зафиксирована в логах, и было сгенерировано автоматическое уведомление. Мы разберёмся в этом.

Дальнейших действий с вашей стороны не требуется. Однако, если ошибка повторяется, вы можете предоставить дополнительные детали, включая шаги для воспроизведения ошибки, опубликовав тему в разделе обратной связи на сайте."

Форум, который я администрирую, находится по адресу: https://forum.testpressing.org/

Любая помощь будет очень кстати.

Я тоже только что обновился, и мой контейнер не собирается, а затем падает. Это очень досадно.

Не перезапускайте сборку, если она зависла, так как при попытке это сделать у меня упала вся система…

То же самое поведение. У меня возникали ошибки с воркерами, я перезапустил его… он упал… попытался пересобрать. Теперь постоянные падения.

/var/discourse# ./launcher rebuild app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-08-27T21:43:42.091270 #1]  INFO -- : Reading from stdin
I, [2024-08-27T21:43:42.110405 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2024-08-27T21:43:42.117678 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2024-08-27T21:43:42.125472 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2024-08-27T21:43:42.132700 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown:
I, [2024-08-27T21:43:42.139622 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2024-08-27T21:43:42.140454 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.141762 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.142675 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.143534 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.144382 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.144912 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.145541 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.146355 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.146979 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.147851 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.148557 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.149423 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.149931 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

2024/08/27 21:43:42 socat[28] E connect(, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Connection refused
I, [2024-08-27T21:43:42.217004 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-08-27T21:43:42.217327 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-08-27T21:43:42.220344 #1]  INFO -- : Terminating async processes
2024-08-27 21:43:42.300 UTC [30] LOG:  starting PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-08-27 21:43:42.300 UTC [30] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-08-27 21:43:42.300 UTC [30] LOG:  listening on IPv6 address "::", port 5432
2024-08-27 21:43:42.303 UTC [30] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-08-27 21:43:42.310 UTC [31] LOG:  database system was interrupted; last known up at 2024-08-27 21:41:14 UTC
2024-08-27 21:43:42.503 UTC [31] LOG:  database system was not properly shut down; automatic recovery in progress
2024-08-27 21:43:42.507 UTC [31] LOG:  redo starts at 38C/55C02EA0
2024-08-27 21:43:42.507 UTC [31] LOG:  invalid record length at 38C/55C02ED8: wanted 24, got 0
2024-08-27 21:43:42.507 UTC [31] LOG:  redo done at 38C/55C02EA0
2024-08-27 21:43:42.540 UTC [30] LOG:  database system is ready to accept connections

Просто зависает там навсегда… не назначает порты контейнеру, не запускает Rails-приложение и ничего подобного, насколько я могу судить.

Если вы выполните

./launcher start app

вернется ли он обратно?

Нет… существует контейнер-зомби, который создаётся командой ./launcher rebuild app, и он выдаёт вывод, показанный выше. Вот как выглядит этот контейнер. Он начинает сборку с базового образа Discourse, но затем зависает, как упоминалось ранее. Он не регистрируется как приложение Discourse.

/var/discourse# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS               NAMES
02ae320b72a0        discourse/base:2.0.20240825-0027   "/bin/bash -c '/usr/…"   7 minutes ago       Up 7 minutes                            sleepy_driscoll

При запуске ./launcher start app возникает ошибка, потому что система пытается запустить новое приложение, а PostgreSQL уже работает на порту 5432 в контейнере-зомби. Если удалить контейнер-зомби (и/или образы), то создаётся новый контейнер, но он снова зависает с теми же логами, как в моём предыдущем сообщении.

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

Я думаю, что эти логи наиболее релевантны для ситуации на моём форуме

2024-08-27 21:43:42.300 UTC [30] LOG:  запуск PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) на x86_64-pc-linux-gnu, скомпилировано с помощью gcc (Debian 12.2.0-14) 12.2.0, 64-бит
2024-08-27 21:43:42.300 UTC [30] LOG:  прослушивание IPv4-адреса "0.0.0.0", порт 5432
2024-08-27 21:43:42.300 UTC [30] LOG:  прослушивание IPv6-адреса "::", порт 5432
2024-08-27 21:43:42.303 UTC [30] LOG:  прослушивание Unix-сокета "/var/run/postgresql/.s.PGSQL.5432"
2024-08-27 21:43:42.310 UTC [31] LOG:  система баз данных была прервана; последнее известное состояние активности на 2024-08-27 21:41:14 UTC
2024-08-27 21:43:42.503 UTC [31] LOG:  система баз данных не была корректно завершена; выполняется автоматическое восстановление
2024-08-27 21:43:42.507 UTC [31] LOG:  повторное выполнение начинается с 38C/55C02EA0
2024-08-27 21:43:42.507 UTC [31] LOG:  недопустимая длина записи в 38C/55C02ED8: ожидалось 24, получено 0
2024-08-27 21:43:42.507 UTC [31] LOG:  повторное выполнение завершено в 38C/55C02EA0
2024-08-27 21:43:42.540 UTC [30] LOG:  система баз данных готова принимать подключения

просто зависает здесь навсегда… никогда не компилирует ассеты, не запускает Rails-приложение, не запускает Redis и так далее.

Ох, понятно… значит, это проблема, с которой сталкиваются хотя бы несколько человек :frowning:

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

/var/discourse# ./launcher start app
Обнаружена архитектура x86_64.
ПРЕДУПРЕЖДЕНИЕ: файл containers/app.yml доступен для чтения всеми. Вы можете защитить этот файл, выполнив команду: chmod o-rwx containers/app.yml

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e DISCOURSE_HOSTNAME=redacted.com -e DISCOURSE_DEVELOPER_EMAILS=redacted -e DISCOURSE_SMTP_ADDRESS=smtp.redacted.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=postmaster@redacted -e DISCOURSE_SMTP_PASSWORD=redacted -e DISCOURSE_SMTP_ENABLE_START_TLS=true -e LETSENCRYPT_ACCOUNT_EMAIL=redacted -h discourse-beta-ubuntu-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:52:ee:ee:62:b2 local_discourse/app /sbin/boot
Не удалось найти образ 'local_discourse/app:latest' локально.
/usr/bin/docker: Ошибка ответа от демона: доступ на загрузку для local_discourse/app запрещен, репозиторий не существует или может потребоваться 'docker login'.
См. '/usr/bin/docker run --help'.

Когда я пытаюсь запустить приложение :point_up_2: …, оно жалуется, что образа local_discourse/app нет. Это верно:

/var/discourse# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
discourse/base      2.0.20240825-0027   9dc96b6115cb        2 days ago          3.38GB

но попытка скачать и собрать образ не удаётся из-за зависания базы данных.

Решение см. по ссылке: