Discourse AI로 인해 재빌드 실패

최신 빌드에서 재구성이 실패합니다. 재구성을 성공적으로 완료하려면 AI 플러그인을 제거해야 하는데, 혹시 아이디어가 있으신가요?

오류

원인:

PG::InsufficientPrivilege: ERROR:  must be owner of extension vector (PG::InsufficientPrivilege)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:217:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'
/var/www/discourse/lib/mini_sql_multisite_connection.rb:109:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:196:in `exec'
/var/www/discourse/plugins/discourse-ai/db/migrate/20240611170904_upgrade_pgvector_070.rb:10:in `up'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:989:in `public_send'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:989:in `exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `block in exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:970:in `block (2 levels) in migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:969:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:227:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:968:in `migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1178:in `migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1529:in `block in execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:535:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:532:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:344:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1580:in `ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1528:in `execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1503:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1503:in `migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1448:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1600:in `with_advisory_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1448:in `migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1274:in `up'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/migration.rb:1249:in `migrate'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/tasks/database_tasks.rb:251:in `migrate'
/var/www/discourse/lib/tasks/db.rake:259:in `block (2 levels) in <main>'
/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:234:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
I, [2024-09-26T02:33:15.511637 #1]  INFO -- : gem install tokenizers -v 0.4.4 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed tokenizers-0.4.4-x86_64-linux
1 gem installed
gem install tiktoken_ruby -v 0.0.9 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed tiktoken_ruby-0.0.9-x86_64-linux
1 gem installed
gem install multipart-post -v 2.4.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed multipart-post-2.4.0
1 gem installed
gem install faraday-multipart -v 1.0.4 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed faraday-multipart-1.0.4
1 gem installed
gem install event_stream_parser -v 1.0.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed event_stream_parser-1.0.0
1 gem installed
gem install ruby-openai -v 7.0.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed ruby-openai-7.0.0
1 gem installed
gem install google_search_results -v 2.2.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed google_search_results-2.2.0
1 gem installed
gem install wikipedia-client -v 1.17.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed wikipedia-client-1.17.0
1 gem installed
gem install childprocess -v 5.0.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed childprocess-5.0.0
1 gem installed
gem install liquid -v 5.5.0 -i /var/www/discourse/plugins/discourse-custom-wizard/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed liquid-5.5.0
1 gem installed
gem install discourse_subscription_client -v 0.1.2 -i /var/www/discourse/plugins/discourse-custom-wizard/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed discourse_subscription_client-0.1.2
1 gem installed
gem install discourse_plugin_statistics -v 0.1.0.pre7 -i /var/www/discourse/plugins/discourse-custom-wizard/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed discourse_plugin_statistics-0.1.0.pre7
1 gem installed
gem install geocoder -v 1.8.2 -i /var/www/discourse/plugins/discourse-locations/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.8.2
1 gem installed
gem install aws-sdk-translate -v 1.35.0 -i /var/www/discourse/plugins/discourse-translator/gems/3.3.4 --no-document --ignore-dependencies --no-user-install
Successfully installed aws-sdk-translate-1.35.0
1 gem installed
== 20240611170904 UpgradePgvector070: migrating ===============================



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1936 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.
./discourse-doctor may help diagnose the problem.
981f5a5797fa920052c5f2e33e4a36d4e515a053d5e922ca91882d0712379d3b
x86_64 arch detected.
881912b282ea
Nothing to do, your container has already started!

이 오류는 Broken update: ERROR: must be owner of extension vector (PG::InsufficientPrivilege) 을 떠올리게 합니다.

흥미롭네요, 감사합니다! 컨테이너 2개를 사용하는 구조입니다. @pfaffman 이 작업에 대해 언젠가 도움을 받아야 할 것 같은데, 우선순위는 매우 낮습니다.

데이비드, 안녕.

문제는 데이터 컨테이너를 다시 빌드해야 한다는 것일 거라고 확신합니다. https://dashboard.literatecomputing.com/ 에서 다시 빌드하면 한 번의 클릭으로 처리해 줄 거예요. 최근 pgvector가 요구되는 버전이 아니면 데이터 컨테이너를 다시 빌드하도록 확인 기능을 추가했거든요.

도커 버전은 최신 상태이므로 정상적으로 작동할 거예요.

아니면 알려주시면 제가 대신 그 버튼을 눌러 드릴게요.

제이, 고마워! 언젠가는 명령줄을 쓰는 습관을 고쳐서 네가 만든 버튼을 믿고 쓰게 될 거야 :wink::man_facepalming:t3:

솔직히 저는 터미널을 아주 잘 다루는 편인데, 대시보드의 좋은 점은 ansible 스크립트를 실행하여 사람들이 흔히 잊기 쉬운 일들을 대신해 준다는 것입니다. 예를 들어 디스크 공간이 부족해지면 정리 작업을 수행하거나, postgres 업그레이드 시기가 되었음을 감지하는 것이지요(이 경우에는 전체 버전 재빌드보다 몇 번의 재빌드만으로도 되는 간단한 재빌드를 수행합니다). 웹 컨테이너를 종료하고 데이터를 재빌드한 뒤, 부트스트랩을 진행하기 전에 웹 컨테이너를 다시 시작하는 것까지 자동으로 처리해 줍니다.

아! 그리고 비활성화(deprecated)되었거나 코어(core)로 이동된 일부 플러그인도 알아서 자동으로 제거해 줍니다.

하지만 굳이 추가적인 작업을 하고 싶거나, 컴퓨터가 무언가를 하는 것을 멍하니 바라보는 것을 즐기는 분(저처럼)이라면, 업그레이드가 진행되는 동안 커맨드 라인에 로그인하여 다음을 입력할 수 있습니다.

docker logs -f container-name

이렇게 하면 부트스트랩 과정을 실시간으로 지켜볼 수 있습니다. 컨테이너 이름을 입력할 때 탭 키를 두 번 누르면, docker가 자동으로 부여한 그 우스운 랜덤 이름을 확인할 수 있습니다.

감사합니다.