Сбой установки Discourse AI

Кто-нибудь знает, что может вызывать следующее сообщение об ошибке при попытке установить плагин Discourse AI?

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1675 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", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]} bootstrap failed with exit code 1

Ссылка: Discourse AI

Заранее спасибо за любую помощь.

Это точно плагин ИИ? У вас есть ещё последняя часть логов, чтобы мы могли увидеть ошибку(и)?

Я помню, что здесь встречал похожую проблему:

Вот более полный список записей журнала, в самом конце лога. Теперь у меня есть все 575 строк, поэтому, если вам нужна полная версия, просто дайте знать.

1. 98:M 15 Jul 2024 15:46:33.090 # Пользователь запросил завершение работы...

2. 98:M 15 Jul 2024 15:46:33.090 * Сохранение финального снимка RDB перед выходом.

3. 2024-07-15 15:46:33.103 UTC [36] LOG: система баз данных завершена

4. 98:M 15 Jul 2024 15:46:33.205 * База данных сохранена на диск

5. 98:M 15 Jul 2024 15:46:33.205 # Redis теперь готов к выходу, пока...

* ОШИБКА

6. --------------------

7. Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершилась с ошибкой, код возврата #<Process::Status: pid 1676 exit 1>

8. Место ошибки: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'

9. Выполнение не удалось с параметрами {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}

10. Загрузка не удалась с кодом выхода 1

11. ** ЗАГРУЗКА НЕ УДАЛАСЬ ** Пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.

12. ./discourse-doctor может помочь диагностировать проблему.

13. 1143b37805d37aeca127453b4c978fff71efca2bd2ed56be58acd404c7ea8f49

Ошибка должна быть выше, поэтому в конце лога вас просят

Вот и всё. Похоже, ошибки начинаются именно здесь.

1. I, [2024-07-15T15:46:21.288666 #1] INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf

2. I, [2024-07-15T15:46:21.290036 #1] INFO -- : > sleep 10

3. 1673:C 15 Jul 2024 15:46:21.296 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

4. 1673:C 15 Jul 2024 15:46:21.296 # Redis version=7.0.7, bits=64, commit=00000000, modified=0, pid=1673, just started

5. 1673:C 15 Jul 2024 15:46:21.296 # Configuration loaded

6. 1673:M 15 Jul 2024 15:46:21.297 * monotonic clock: POSIX clock_gettime

7. 1673:M 15 Jul 2024 15:46:21.297 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use

8. 1673:M 15 Jul 2024 15:46:21.297 # Failed listening on port 6379 (TCP), aborting.

9. I, [2024-07-15T15:46:31.293903 #1] INFO -- :

10. I, [2024-07-15T15:46:31.294204 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

11. rake aborted!

12. LoadError: cannot load such file -- tokenizers/tokenizers (LoadError)

13. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'

14. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in `require'

15. /var/www/discourse/plugins/discourse-ai/gems/3.3.3/gems/tokenizers-0.4.2-x86_64-linux/lib/tokenizers.rb:5:in `rescue in <main>'

16. /var/www/discourse/plugins/discourse-ai/gems/3.3.3/gems/tokenizers-0.4.2-x86_64-linux/lib/tokenizers.rb:2:in `<main>'

17. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'

18. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in `require'

19. /var/www/discourse/lib/plugin_gem.rb:27:in `load'

20. /var/www/discourse/lib/plugin/instance.rb:857:in `gem'

21. /var/www/discourse/plugins/discourse-ai/plugin.rb:11:in `activate!'

22. /var/www/discourse/lib/plugin/instance.rb:754:in `instance_eval'

23. /var/www/discourse/lib/plugin/instance.rb:754:in `activate!'

24. /var/www/discourse/lib/discourse.rb:347:in `block in activate_plugins!'

25. /var/www/discourse/lib/discourse.rb:344:in `each'

26. /var/www/discourse/lib/discourse.rb:344:in `activate_plugins!'

27. /var/www/discourse/config/application.rb:227:in `block in <class:Application>'

28. /var/www/discourse/lib/plugin.rb:6:in `initialization_guard'

29. /var/www/discourse/config/application.rb:227:in `<class:Application>'

30. /var/www/discourse/config/application.rb:75:in `<module:Discourse>'

31. /var/www/discourse/config/application.rb:74:in `<top (required)>'

32. /var/www/discourse/Rakefile:7:in `<top (required)>'

33. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.1.0/exe/rake:27:in `<top (required)>'

34. /usr/local/bin/bundle:25:in `load'

35. /usr/local/bin/bundle:25:in `<main>'

* Caused by:

36. LoadError: cannot load such file -- tokenizers/3.3/tokenizers (LoadError)

37. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'

38. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in `require'

39. /var/www/discourse/plugins/discourse-ai/gems/3.3.3/gems/tokenizers-0.4.2-x86_64-linux/lib/tokenizers.rb:3:in `<main>'

40. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'

41. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in `require'

42. /var/www/discourse/lib/plugin_gem.rb:27:in `load'

43. /var/www/discourse/lib/plugin/instance.rb:857:in `gem'

44. /var/www/discourse/plugins/discourse-ai/plugin.rb:11:in `activate!'

45. /var/www/discourse/lib/plugin/instance.rb:754:in `instance_eval'

46. /var/www/discourse/lib/plugin/instance.rb:754:in `activate!'

47. /var/www/discourse/lib/discourse.rb:347:in `block in activate_plugins!'

48. /var/www/discourse/lib/discourse.rb:344:in `each'

49. /var/www/discourse/lib/discourse.rb:344:in `activate_plugins!'

50. /var/www/discourse/config/application.rb:227:in `block in <class:Application>'

51. /var/www/discourse/lib/plugin.rb:6:in `initialization_guard'

52. /var/www/discourse/config/application.rb:227:in `<class:Application>'

53. /var/www/discourse/config/application.rb:75:in `<module:Discourse>'

54. /var/www/discourse/config/application.rb:74:in `<top (required)>'

55. /var/www/discourse/Rakefile:7:in `<top (required)>'

56. /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.1.0/exe/rake:27:in `<top (required)>'

57. /usr/local/bin/bundle:25:in `load'

58. /usr/local/bin/bundle:25:in `<main>'

59. (See full trace by running task with --trace)

60. I, [2024-07-15T15:46:33.013894 #1] INFO -- : gem install tokenizers -v 0.4.2 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.3 --no-document --ignore-dependencies --no-user-install

61. Successfully installed tokenizers-0.4.2-x86_64-linux

62. 1 gem installed

* I, [2024-07-15T15:46:33.014198 #1] INFO -- : Terminating async processes

63. I, [2024-07-15T15:46:33.014218 #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: 36

64. I, [2024-07-15T15:46:33.014237 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 98

65. 98:signal-handler (1721058393) Received SIGTERM scheduling shutdown...

66. 2024-07-15 15:46:33.014 UTC [36] LOG: received fast shutdown request

67. 2024-07-15 15:46:33.045 UTC [36] LOG: aborting any active transactions

68. 2024-07-15 15:46:33.046 UTC [36] LOG: background worker "logical replication launcher" (PID 51) exited with exit code 1

69. 2024-07-15 15:46:33.048 UTC [46] LOG: shutting down

70. 98:M 15 Jul 2024 15:46:33.090 # User requested shutdown...

71. 98:M 15 Jul 2024 15:46:33.090 * Saving the final RDB snapshot before exiting.

72. 2024-07-15 15:46:33.103 UTC [36] LOG: database system is shut down

73. 98:M 15 Jul 2024 15:46:33.205 * DB saved on disk

74. 98:M 15 Jul 2024 15:46:33.205 # Redis is now ready to exit, bye bye...

* FAILED

75. --------------------

76. Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1676 exit 1>

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

78. exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}

79. bootstrap failed with exit code 1

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

81. ./discourse-doctor may help diagnose the problem.

82. 1143b37805d37aeca127453b4c978fff71efca2bd2ed56be58acd404c7ea8f49

Выглядит почти идентично тому, что я опубликовал в Cannot rebuild with Discourse AI. Хотя в обоих логах ошибок есть общая проблема с библиотекой tokenizers, из-за которой не удаётся выполнить команду rake db:migrate, в вашем логе дополнительно присутствует ошибка запуска сервера Redis, которой нет в моём.

@JammyDodger, как я уже писал в Cannot rebuild with Discourse AI, проблема точно в плагине AI.

Да, эта проблема, похоже, также связана с токенизаторами. Позвольте мне выяснить, что я смогу узнать. :eyes:

@PeakProsperity - По какой ветке Discourse работает ваш сайт? Случайно ли вы используете beta или stable?

В настоящее время мы используем версию 3.2.1.

Я на версии 3.2.4. На этот раз у меня тоже возникла ошибка Redis. Думаю, логи, которые я отправлял ранее, были с версии 3.2.1. Всё работало отлично, когда я (неосознанно) собирал Discourse из последних коммитов в ветке main. Проблема появилась, когда я пересобрал его из стабильной ветки.

Мы недавно обновили Ruby до версии 3.3, и поскольку вы используете 3.2.1, плагин зафиксирован на более старом коммите в целях совместимости. В этом коммите дополнительные библиотеки, необходимые плагину, несовместимы с 3.3.

Обновление Discourse до версии 3.3 уже на подходе, и оно должно решить проблему, но я не хотел оставлять вас в неведении или заставлять переходить на ветку beta/tests-passed. Поэтому я зафиксировал плагин на коммите, совместимом с Ruby 3.3:

Пожалуйста, сообщите, если у вас всё ещё возникнут ошибки при пересборке.

Большое спасибо за быстрое исправление! :pray: Гем tokenizers был установлен успешно, но теперь у меня возникла новая ошибка:

NoMethodError: undefined method `commands=' for an instance of AiPersona (NoMethodError)
Детали

I, [2024-07-17T22:56:15.152388 #1] INFO – : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2024-07-17T22:56:15.154420 #1] INFO – : > sleep 10
1718:C 17 Jul 2024 22:56:15.172 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1718:C 17 Jul 2024 22:56:15.172 # Redis version=7.0.7, bits=64, commit=00000000, modified=0, pid=1718, just started
1718:C 17 Jul 2024 22:56:15.172 # Configuration loaded
1718:M 17 Jul 2024 22:56:15.173 * monotonic clock: POSIX clock_gettime
1718:M 17 Jul 2024 22:56:15.174 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
1718:M 17 Jul 2024 22:56:15.174 # Failed listening on port 6379 (TCP), aborting.
I, [2024-07-17T22:56:25.158167 #1] INFO – :
I, [2024-07-17T22:56:25.158535 #1] INFO – : > cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’
97:M 17 Jul 2024 22:58:13.874 * 100 changes in 300 seconds. Saving…
97:M 17 Jul 2024 22:58:13.877 * Background saving started by pid 3947
3947:C 17 Jul 2024 22:58:14.323 * DB saved on disk
3947:C 17 Jul 2024 22:58:14.326 * Fork CoW for RDB: current 2 MB, peak 2 MB, average 1 MB
97:M 17 Jul 2024 22:58:14.379 * Background saving terminated with success
rake aborted!
NoMethodError: undefined method `commands=’ for an instance of AiPersona (NoMethodError)

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:58:in block in open' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:57:in open’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:57:in open' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:36:in block in run_file’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:319:in block in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:317:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in transaction' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:35:in run_file' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:26:in block in run’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:25:in each' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/seed-fu/runner.rb:25:in run’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/discourse-seed-fu-2.3.12/lib/discourse-seed-fu.rb:29:in seed' /var/www/discourse/lib/tasks/db.rake:259:in block (2 levels) in ’
/var/www/discourse/lib/distributed_mutex.rb:53:in block in synchronize' /var/www/discourse/lib/distributed_mutex.rb:49:in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:49:in synchronize' /var/www/discourse/lib/distributed_mutex.rb:34:in synchronize’
/var/www/discourse/lib/tasks/db.rake:231:in block in <main>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.1.0/exe/rake:27:in <top (required)>’
/usr/local/bin/bundle:25:in load' /usr/local/bin/bundle:25:in
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
I, [2024-07-17T22:58:15.868384 #1] INFO – : gem install tokenizers -v 0.4.3 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed tokenizers-0.4.3-x86_64-linux
1 gem installed
gem install tiktoken_ruby -v 0.0.7 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed tiktoken_ruby-0.0.7-x86_64-linux
1 gem installed
gem install iso8601 -v 0.13.0 -i /var/www/discourse/plugins/discourse-automation/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed iso8601-0.13.0
1 gem installed
gem install rrule -v 0.4.4 -i /var/www/discourse/plugins/discourse-automation/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed rrule-0.4.4
1 gem installed
gem install sawyer -v 0.9.2 -i /var/www/discourse/plugins/discourse-code-review/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed sawyer-0.9.2
1 gem installed
gem install octokit -v 5.6.1 -i /var/www/discourse/plugins/discourse-code-review/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed octokit-5.6.1
1 gem installed
gem install pqueue -v 2.1.0 -i /var/www/discourse/plugins/discourse-code-review/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Successfully installed pqueue-2.1.0
1 gem installed
gem install rugged -v 1.7.1 -i /var/www/discourse/plugins/discourse-code-review/gems/3.3.3 --no-document --ignore-dependencies --no-user-install
Building native extensions. This could take a while…
Successfully installed rugged-1.7.1
1 gem installed

I, [2024-07-17T22:58:15.869101 #1] INFO – : Terminating async processes
I, [2024-07-17T22:58:15.869151 #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: 35
I, [2024-07-17T22:58:15.869356 #1] INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 97
97:signal-handler (1721257095) Received SIGTERM scheduling shutdown…
2024-07-17 22:58:15.869 UTC [35] LOG: received fast shutdown request
2024-07-17 22:58:15.874 UTC [35] LOG: aborting any active transactions
2024-07-17 22:58:15.880 UTC [35] LOG: background worker “logical replication launcher” (PID 50) exited with exit code 1
2024-07-17 22:58:15.880 UTC [45] LOG: shutting down
97:M 17 Jul 2024 22:58:15.887 # User requested shutdown…
97:M 17 Jul 2024 22:58:15.887 * Saving the final RDB snapshot before exiting.
2024-07-17 22:58:15.917 UTC [35] LOG: database system is shut down
97:M 17 Jul 2024 22:58:16.349 * DB saved on disk
97:M 17 Jul 2024 22:58:16.349 # Redis is now ready to exit, bye bye…

FAILED

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ failed with return #<Process::Status: pid 1722 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”, “tag”=>“migrate”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap failed with exit code 1

Хм, это неожиданно.

@aas — проверь, нет ли у тебя ожидающих миграций.

./launcher enter app
LOAD_PLUGINS=1 bundle exec rake db:migrate

По сути, ты используешь плагин из этой ветки, где в таблице personas есть столбец command.

Это сработало! Нам удалось завершить установку. Я предполагаю, что при следующем обновлении Discourse подтянет самую последнюю версию, верно?

Вот вывод. Не совсем понятно, в чём дело, так как мой экземпляр Discourse работает нормально.

LOAD_PLUGINS=1 bundle exec rake db:migrate

root@forum-app:/var/www/discourse# LOAD_PLUGINS=1 bundle exec rake db:migrate
fatal: обнаружена сомнительная принадлежность репозитория в ‘/var/www/discourse’
Чтобы добавить исключение для этой директории, выполните:

git config --global --add safe.directory /var/www/discourse

rake aborted!
ActiveRecord::NoDatabaseError: Не удалось найти вашу базу данных: discourse. Она должна быть указана в файле конфигурации базы данных, расположенном в config/database.yml. (ActiveRecord::NoDatabaseError)

Чтобы решить эту проблему:

  • Вы создали базу данных для этого приложения или удалили её? Возможно, вам нужно создать базу данных.
  • Изменилось ли имя базы данных? Проверьте, что в config/database.yml указано правильное имя базы данных.

Чтобы создать базу данных, выполните:

    bin/rails db:create

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in rescue in new_client' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:77:in new_client’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in postgresql_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in public_send’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in new_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:700:in checkout_new_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:679:in try_to_checkout_new_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:640:in acquire_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in checkout' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in retrieve_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_handling.rb:313:in retrieve_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_handling.rb:280:in connection' /var/www/discourse/lib/site_settings/db_provider.rb:58:in table_exists?’
/var/www/discourse/lib/site_settings/db_provider.rb:14:in all' /var/www/discourse/lib/site_settings/defaults_provider.rb:30:in db_all’
/var/www/discourse/lib/site_setting_extension.rb:260:in block in refresh!' /var/www/discourse/lib/site_setting_extension.rb:253:in synchronize’
/var/www/discourse/lib/site_setting_extension.rb:253:in refresh!' /var/www/discourse/lib/site_setting_extension.rb:528:in block in setup_methods’
/var/www/discourse/config/initializers/100-push-notifications.rb:13:in block in <main>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:445:in instance_exec’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:445:in block in make_lambda' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:199:in block (2 levels) in halting’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:687:in block (2 levels) in default_terminator' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:686:in catch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:686:in block in default_terminator' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:200:in block in halting’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in block in invoke_before' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in each’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in invoke_before' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:106:in run_callbacks’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/reloader.rb:88:in prepare!' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application/finisher.rb:68:in block in module:Finisher
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in instance_exec' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in run’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:61:in block in run_initializers' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:60:in run_initializers’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:372:in initialize!' /var/www/discourse/config/environment.rb:7:in
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in require' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in require’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:348:in require_environment!' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:506:in block in run_tasks_blocks’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.1.0/exe/rake:27:in <top (required)>' /usr/local/bin/bundle:25:in load’
/usr/local/bin/bundle:25:in `’

Вызвано:
PG::ConnectionBad: соединение с сервером через сокет “/var/run/postgresql/.s.PGSQL.5432” не удалось: FATAL: Ошибка аутентификации по peer для пользователя “discourse” (PG::ConnectionBad)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/pg-1.5.4/lib/pg/connection.rb:696:in async_connect_or_reset' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/pg-1.5.4/lib/pg/connection.rb:824:in connect_to_hosts’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/pg-1.5.4/lib/pg/connection.rb:759:in new' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/pg-1.5.4/lib/pg.rb:63:in connect’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:78:in new_client' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in postgresql_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in public_send' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in new_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:700:in checkout_new_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:679:in try_to_checkout_new_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:640:in acquire_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in checkout’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in retrieve_connection’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_handling.rb:313:in retrieve_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8/lib/active_record/connection_handling.rb:280:in connection’
/var/www/discourse/lib/site_settings/db_provider.rb:58:in table_exists?' /var/www/discourse/lib/site_settings/db_provider.rb:14:in all’
/var/www/discourse/lib/site_settings/defaults_provider.rb:30:in db_all' /var/www/discourse/lib/site_setting_extension.rb:260:in block in refresh!’
/var/www/discourse/lib/site_setting_extension.rb:253:in synchronize' /var/www/discourse/lib/site_setting_extension.rb:253:in refresh!’
/var/www/discourse/lib/site_setting_extension.rb:528:in block in setup_methods' /var/www/discourse/config/initializers/100-push-notifications.rb:13:in block in ’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:445:in instance_exec' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:445:in block in make_lambda’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:199:in block (2 levels) in halting' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:687:in block (2 levels) in default_terminator’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:686:in catch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:686:in block in default_terminator’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:200:in block in halting' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in block in invoke_before’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in each' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:595:in invoke_before’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:106:in run_callbacks' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8/lib/active_support/reloader.rb:88:in prepare!’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application/finisher.rb:68:in block in <module:Finisher>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in instance_exec’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in run' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:61:in block in run_initializers’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/initializable.rb:60:in run_initializers' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:372:in initialize!’
/var/www/discourse/config/environment.rb:7:in <main>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.17.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in require’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.12/lib/zeitwerk/kernel.rb:38:in require' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:348:in require_environment!’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.0.8/lib/rails/application.rb:506:in block in run_tasks_blocks' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.1.0/exe/rake:27:in <top (required)>’
/usr/local/bin/bundle:25:in load' /usr/local/bin/bundle:25:in
Задачи: TOP = db:migrate = db:load_config = environment
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)

Мне нужно что-то сделать, чтобы собрать плагин из этой ветки? У меня в app.yaml просто указано git clone https://github.com/discourse/discourse-ai.git.

EDIT: Похоже, это можно сделать, изменив команду на git clone -b security/backport-ssrf-protection https://github.com/discourse/discourse-ai.git. Однако это, кажется, не обязательно, поскольку упомянутый выше PR был слит в ветку main. :thinking:

Да. Как только выйдет Discourse v3.3, вы будете использовать последнюю версию плагина.

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

К сожалению, у меня тот же результат :sadpanda:

1719:M 18 Jul 2024 14:58:24.143 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
1719:M 18 Jul 2024 14:58:24.143 # Failed listening on port 6379 (TCP), aborting.
I, [2024-07-18T14:58:34.132729 #1]  INFO -- :
I, [2024-07-18T14:58:34.133090 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
97:M 18 Jul 2024 15:00:31.873 * 100 changes in 300 seconds. Saving...
97:M 18 Jul 2024 15:00:31.876 * Background saving started by pid 3948
3948:C 18 Jul 2024 15:00:32.356 * DB saved on disk
3948:C 18 Jul 2024 15:00:32.358 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB
97:M 18 Jul 2024 15:00:32.378 * Background saving terminated with success
rake aborted!
NoMethodError: undefined method `commands=' for an instance of AiPersona (NoMethodError)
.
.
.
I, [2024-07-18T15:00:33.541391 #1]  INFO -- : Terminating async processes
I, [2024-07-18T15:00:33.541460 #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: 35
I, [2024-07-18T15:00:33.541515 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 97
2024-07-18 15:00:33.542 UTC [35] LOG:  received fast shutdown request
97:signal-handler (1721314833) Received SIGTERM scheduling shutdown...
2024-07-18 15:00:33.546 UTC [35] LOG:  aborting any active transactions
2024-07-18 15:00:33.550 UTC [35] LOG:  background worker "logical replication launcher" (PID 50) exited with exit code 1
2024-07-18 15:00:33.555 UTC [45] LOG:  shutting down
97:M 18 Jul 2024 15:00:33.585 # User requested shutdown...
97:M 18 Jul 2024 15:00:33.585 * Saving the final RDB snapshot before exiting.
2024-07-18 15:00:33.586 UTC [35] LOG:  database system is shut down
97:M 18 Jul 2024 15:00:34.067 * DB saved on disk
97:M 18 Jul 2024 15:00:34.067 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1722 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", "tag"=>"migrate", "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.

Мы решили это в личных сообщениях. Это произошло потому, что инстанс ранее следовал за веткой tests-passed, а затем переключился на stable. Понижение версии не рекомендуется, так как схема вашей базы данных перестанет соответствовать тому, что ожидает код приложения.