Это на тестовой машине. Ранее я запускал там Discourse — я ошибся при установке и не смог обновиться до последней версии, что я сначала посчитал своей ошибкой. После удаления всей директории Discourse и очистки Docker я попытался выполнить полную чистую установку перед импортом резервной копии из рабочей базы данных.
Странно, но я всё ещё наблюдаю те же проблемы, которые не могу решить.
Вот вывод об ошибке. Я уже пробовал запускать discourse-doctor, но это не дало никакой полезной информации.
...
I, [2022-06-04T18:42:29.087446 #1] INFO -- : Terminating async processes
I, [2022-06-04T18:42:29.087672 #1] INFO -- : Sending INT to 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 pid: 42
I, [2022-06-04T18:42:29.087881 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103
2022-06-04 18:42:29.088 UTC [42] LOG: received fast shutdown request
103:signal-handler (1654368149) Received SIGTERM scheduling shutdown...
2022-06-04 18:42:29.118 UTC [42] LOG: aborting any active transactions
2022-06-04 18:42:29.123 UTC [42] LOG: background worker "logical replication launcher" (PID 51) exited with exit code 1
2022-06-04 18:42:29.123 UTC [46] LOG: shutting down
103:M 04 Jun 2022 18:42:29.154 # User requested shutdown...
103:M 04 Jun 2022 18:42:29.154 * Saving the final RDB snapshot before exiting.
103:M 04 Jun 2022 18:42:29.159 * DB saved on disk
103:M 04 Jun 2022 18:42:29.159 # Redis is now ready to exit, bye bye...
2022-06-04 18:42:29.201 UTC [42] LOG: database system is shut down
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1102 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
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.
69cb25658efb6f16e4479bb98a2d0278d72e56028865730841ac1efacc5b8d9d
==================== END REBUILD LOG ====================
Сам сервер должен быть в порядке — достаточно места на диске и других ресурсов. Есть какие-то идеи?
103:M 04 Jun 2022 18:40:07.369 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
Хм… 16 ГБ ОЗУ — это довольно много, поэтому может показаться, что файл подкачки (swap) не нужен. Однако я бы сказал, что его добавление вряд ли навредит. Без просмотра вашего лога я не могу утверждать, что проблема заключается в нехватке памяти. Но если это так, изменение режима перераспределения (overcommit) может помочь, независимо от того, есть у вас файл подкачки или нет.
Хорошо нашли, Эд. Спасибо. Похоже, что s3_bucket в какой-то момент был изменён на s3_upload_bucket, и у меня есть эти переменные в containers/app.yml, что, видимо, и вызвало проблему. По крайней мере, теперь сборка прошла успешно после того, как я заменил DISCOURSE_S3_BUCKET на DISCOURSE_S3_UPLOAD_BUCKET.
Жаль, что такие изменения не сопровождаются проверкой в процессе сборки, чтобы избежать подобных ситуаций — и слава богу, что мы всегда тестируем обновления на тестовой машине.