관리자 패널을 통해 Discourse 3.3.0 beta1에서 beta2로 업그레이드 실패

관리자 제어판에서 Discourse를 최신 테스트 통과 버전으로 3.3.0에서 업그레이드하려고 했을 때 다음과 같은 오류가 발생했습니다.

********************************************************
*** Please be patient, next steps might take a while ***
********************************************************
Cycling Unicorn, to free up memory
Restarting unicorn pid: 540
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Waiting for Unicorn to reload........
Waiting for Unicorn to reload.........
Waiting for Unicorn to reload..........
Waiting for Unicorn to reload...........
Waiting for Unicorn to reload............
Waiting for Unicorn to reload.............
Waiting for Unicorn to reload..............
Waiting for Unicorn to reload...............
Waiting for Unicorn to reload................
Waiting for Unicorn to reload.................
Waiting for Unicorn to reload..................
Waiting for Unicorn to reload...................
Waiting for Unicorn to reload....................
Waiting for Unicorn to reload.....................
Stopping 1 Unicorn worker(s), to free up memory
Stopping job queue to reclaim memory, master pid is 568
Applying patches...
babel-plugin-debug-macros@0.3.4 ✔
content-tag@2.0.1 ✔
ember-this-fallback@0.4.0 (1 deprecation-name) ✔
ember-this-fallback@0.4.0 (2 themes) ✔
ember-this-fallback@0.4.0 (3 exclude-strict-mode) ✔
virtual-dom@2.1.1 ✔
Done in 2.42s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
discourse-adplugin is already at latest compatible version
checking out compatible discourse-ai version: 61890b667c06299841ae88946f84a112f00060e1
HEAD is now at 61890b6 FEATURE: search command now support searching in context of user (#610)
discourse-bbcode-color is already at latest compatible version
discourse-categories-suppressed is already at latest compatible version
discourse-data-explorer is already at latest compatible version
discourse-gamification is already at latest compatible version
discourse-policy is already at latest compatible version
checking out compatible discourse-solved version: a18ce6d712fafed286bcc99543dd173110c6dfb8
HEAD is now at a18ce6d FIX: Allow searching for unsolved posts with tags (#284)
discourse-topic-voting is already at latest compatible version
docker_manager is already at latest compatible version
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
gem install tokenizers -v 0.4.4 -i /var/www/discourse/plugins/discourse-ai/gems/3.2.2 --no-document --ignore-dependencies --no-user-install
Successfully installed tokenizers-0.4.4-x86_64-linux
1 gem installed
Multisite migrator is running using 1 threads

Migrating default
== 20240309034752 CreateRagDocumentFragmentTable: migrating ===================
-- create_table(:rag_document_fragments)
   -> 0.0242s
== 20240309034752 CreateRagDocumentFragmentTable: migrated (0.0308s) ==========

== 20240313165121 EmbeddingTablesForRagUploads: migrating =====================
-- create_table(:ai_document_fragment_embeddings_1_1, {:id=>false})
   -> 0.0105s
-- create_table(:ai_document_fragment_embeddings_2_1, {:id=>false})
   -> 0.0070s
-- create_table(:ai_document_fragment_embeddings_3_1, {:id=>false})
   -> 0.0073s
-- create_table(:ai_document_fragment_embeddings_4_1, {:id=>false})
   -> 0.0067s
-- create_table(:ai_document_fragment_embeddings_5_1, {:id=>false})
   -> 0.0066s
-- create_table(:ai_document_fragment_embeddings_6_1, {:id=>false})
   -> 0.0068s
-- create_table(:ai_document_fragment_embeddings_7_1, {:id=>false})
   -> 0.0083s
== 20240313165121 EmbeddingTablesForRagUploads: migrated (0.0540s) ============

== 20240322035907 AddImagesToAiPersonas: migrating ============================
-- change_table(:ai_personas)
-- add_column(:ai_personas, :vision_enabled, :boolean, {:default=>false, :null=>false})
   -> 0.0019s
-- add_column(:ai_personas, :vision_max_pixels, :integer, {:default=>1048576, :null=>false})
   -> 0.0005s
   -> 0.0027s
== 20240322035907 AddImagesToAiPersonas: migrated (0.0031s) ===================

== 20240404000838 AddMetadataToRagDocumentFrament: migrating ==================
-- add_column(:rag_document_fragments, :metadata, :text, {:null=>true, :limit=>100000})
   -> 0.0011s
== 20240404000838 AddMetadataToRagDocumentFrament: migrated (0.0023s) =========

== 20240409035951 AddRagParamsToAiPersona: migrating ==========================
-- add_column(:ai_personas, :rag_chunk_tokens, :integer, {:null=>false, :default=>374})
   -> 0.0018s
-- add_column(:ai_personas, :rag_chunk_overlap_tokens, :integer, {:null=>false, :default=>10})
   -> 0.0025s
-- add_column(:ai_personas, :rag_conversation_chunks, :integer, {:null=>false, :default=>10})
   -> 0.0057s
== 20240409035951 AddRagParamsToAiPersona: migrated (0.0108s) =================

== 20240410170000 AddEmbeddingsTablesforBgeM3: migrating ======================
-- create_table(:ai_topic_embeddings_8_1, {:id=>false})
   -> 0.0085s
-- create_table(:ai_post_embeddings_8_1, {:id=>false})
   -> 0.0055s
-- create_table(:ai_document_fragment_embeddings_8_1, {:id=>false})
   -> 0.0063s
== 20240410170000 AddEmbeddingsTablesforBgeM3: migrated (0.0209s) =============

== 20240429065155 AddConsolidatedQuestionLlmToAiPersona: migrating ============
-- add_column(:ai_personas, :question_consolidator_llm, :text, {:max_length=>2000})
   -> 0.0005s
== 20240429065155 AddConsolidatedQuestionLlmToAiPersona: migrated (0.0010s) ===

== 20240503034946 AddAllowChatToAiPersona: migrating ==========================
-- add_column(:ai_personas, :allow_chat, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
== 20240503034946 AddAllowChatToAiPersona: migrated (0.0011s) =================

== 20240503042558 AddChatMessageCustomPrompt: migrating =======================
-- create_table(:chat_message_custom_prompts)
   -> 0.0103s
-- add_index(:chat_message_custom_prompts, :message_id, {:unique=>true})
   -> 0.0028s
== 20240503042558 AddChatMessageCustomPrompt: migrated (0.0137s) ==============

Seeding default
*** Bundling assets. This will take a while *** 
$ bundle exec rake themes:update assets:precompile
Checking 'DiscoTOC' for 'default'... up to date
Checking 'Cookie Consent Banner' for 'default'... up to date
Checking 'Dark-Light Toggle' for 'default'... up to date
Checking 'Discourse Navigation Menu Modifier' for 'default'... up to date
Checking 'Navigation Menu Display Control' for 'default'... up to date
Checking 'Account Deletion Request' for 'default'... up to date
Checking 'discourse-gifs' for 'default'... up to date
Checking 'Discourse Top Contributors Sidebar' for 'default'... up to date
Checking 'discourse-search-banner' for 'default'... up to date
Checking 'Discourse Header Search' for 'default'... up to date
Node.js heap_size_limit (984.75) is less than 2048MB. Setting --max-old-space-size=2048.
yarn run v1.22.19
$ /var/www/discourse/node_modules/.bin/ember build
Building
Environment: development
WARNING: ember-test-selectors: You are using an unsupported ember-cli-babel version. data-test properties are not automatically stripped from your JS code.
building...
...[ConfigLoader]
...[Babel: @embroider/macros > applyPatches]
...[Babel: discourse-widget-hbs > applyPatches]
...[Babel: ember-source > applyPatches]
...[Babel: ember-source > applyPatches]
...[ember.js]
...[Babel: @glimmer/component > applyPatches]
...[Babel: pretty-text > applyPatches]
...[Babel: discourse-common > applyPatches]
...[Babel: @ember/legacy-built-in-components > applyPatches]
...[Babel: @ember/render-modifiers > applyPatches]
...[Babel: @ember/test-helpers > applyPatches]
...[Babel: dialog-holder > applyPatches]
...[Babel: ember-this-fallback > applyPatches]
...[Babel: ember-cached-decorator-polyfill > applyPatches]
...[Babel: ember-load-initializers > applyPatches]
...[Babel: float-kit > applyPatches]
...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[SourceMapConcat]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[Babel: admin > applyPatches]
...[SourceMapConcat]
[WARN] (broccoli-terser-sourcemap) Minifying "assets/admin.js" took: 54069ms (more than 20,000ms)
...[Babel: discourse > applyPatches]
...[SourceMapConcat]
...[Babel: discourse > applyPatches]
...[SourceMapConcat]
...[Babel: discourse > applyPatches]
...[SourceMapConcat]
...[Babel: discourse > applyPatches]
...[Babel: discourse-plugins > applyPatches]
...[Babel: discourse-plugins > applyPatches]
...[Babel: discourse-plugins > applyPatches]
...[Babel: discourse-plugins > applyPatches]
 - dist/assets/browser-update.js: 1.51 kB (862 B gzipped)
 - dist/assets/chunk.0f2367ced1a2cd7a0bfa.d41d8cd9.js: 21.3 kB (8.22 kB gzipped)
 - dist/assets/chunk.34aaccce64091bcebbc3.d41d8cd9.js: 447.97 kB (119.69 kB gzipped)
 - dist/assets/chunk.3a140fe9ea124f7d68ee.d41d8cd9.js: 6.67 kB (2.52 kB gzipped)
 - dist/assets/chunk.3eae6d01ac1190dae2bc.d41d8cd9.js: 211 B (187 B gzipped)
 - dist/assets/chunk.43ac507d09f6426466b6.d41d8cd9.js: 4.53 MB (1.02 MB gzipped)
 - dist/assets/chunk.467ded2e98164d782a20.d41d8cd9.js: 6.54 kB (2.66 kB gzipped)
 - dist/assets/chunk.48728634abba982d4eea.d41d8cd9.js: 42.94 kB (14.29 kB gzipped)
 - dist/assets/chunk.4c25ad7e2393f9f3af04.css: 70.35 kB (12.39 kB gzipped)
 - dist/assets/chunk.825036fb6bfa384ce962.d41d8cd9.js: 146 B (135 B gzipped)
 - dist/assets/chunk.8883c2e6339737f95aa2.d41d8cd9.js: 57.28 kB (17.44 kB gzipped)
 - dist/assets/chunk.8e62faf7d333ae639118.d41d8cd9.js: 4.06 kB (1.82 kB gzipped)
 - dist/assets/chunk.9b671dbde2dccbd88fb7.css: 20.97 kB (4.87 kB gzipped)
 - dist/assets/chunk.9b671dbde2dccbd88fb7.d41d8cd9.js: 211 B (188 B gzipped)
 - dist/assets/chunk.ae370d42a589ae57cf86.d41d8cd9.js: 64 kB (12 kB gzipped)
 - dist/assets/chunk.eeb03a313575c789cdea.d41d8cd9.js: 126.16 kB (50.71 kB gzipped)
 - dist/assets/discourse.css: 171 B (157 B gzipped)
 - dist/assets/discourse.d41d8cd98f00b204e9800998ecf8427e.css: 0 B
 - dist/assets/embed-application.js: 1.19 kB (579 B gzipped)
 - dist/assets/google-tag-manager.js: 526 B (357 B gzipped)
 - dist/assets/google-universal-analytics-v3.js: 654 B (404 B gzipped)
 - dist/assets/google-universal-analytics-v4.js: 461 B (298 B gzipped)
 - dist/assets/onpopstate-handler.js: 157 B (143 B gzipped)
 - dist/assets/plugins/chat.js: 962.31 kB (149.89 kB gzipped)
 - dist/assets/plugins/checklist.js: 3.66 kB (1.71 kB gzipped)
 - dist/assets/plugins/discourse-adplugin.js: 67.59 kB (9.41 kB gzipped)
 - dist/assets/plugins/discourse-adplugin_admin.js: 38.44 kB (4.51 kB gzipped)
 - dist/assets/plugins/discourse-ai.js: 198.59 kB (33.8 kB gzipped)
 - dist/assets/plugins/discourse-ai_admin.js: 3.22 kB (735 B gzipped)
 - dist/assets/plugins/discourse-bbcode-color.js: 1.41 kB (615 B gzipped)
 - dist/assets/plugins/discourse-data-explorer.js: 94.66 kB (17.58 kB gzipped)
 - dist/assets/plugins/discourse-details.js: 1.25 kB (614 B gzipped)
 - dist/assets/plugins/discourse-gamification.js: 93.76 kB (9.65 kB gzipped)
 - dist/assets/plugins/discourse-lazy-videos.js: 6.7 kB (2.37 kB gzipped)
 - dist/assets/plugins/discourse-local-dates.js: 33.28 kB (8.95 kB gzipped)
 - dist/assets/plugins/discourse-narrative-bot.js: 1.7 kB (788 B gzipped)
 - dist/assets/plugins/discourse-policy.js: 34.06 kB (6.67 kB gzipped)
 - dist/assets/plugins/discourse-presence.js: 11.25 kB (2.66 kB gzipped)
 - dist/assets/plugins/discourse-solved.js: 23.08 kB (4.97 kB gzipped)
 - dist/assets/plugins/discourse-topic-voting.js: 16.07 kB (3.62 kB gzipped)
 - dist/assets/plugins/docker_manager_admin.js: 38.24 kB (7.45 kB gzipped)
 - dist/assets/plugins/footnote.js: 2.6 kB (1.17 kB gzipped)
 - dist/assets/plugins/poll.js: 63.59 kB (16.39 kB gzipped)
 - dist/assets/plugins/spoiler-alert.js: 3.24 kB (1.38 kB gzipped)
 - dist/assets/plugins/styleguide.js: 153.89 kB (21.4 kB gzipped)
 - dist/assets/print-page.js: 111 B (124 B gzipped)
 - dist/assets/publish.js: 294 B (213 B gzipped)
 - dist/assets/qunit-custom.css: 2.56 kB (746 B gzipped)
 - dist/assets/qunit.css: 888.9 kB (126.63 kB gzipped)
 - dist/assets/scripts/discourse-boot.js: 866 B (511 B gzipped)
 - dist/assets/scripts/discourse-test-listen-boot.js: 122 B (106 B gzipped)
 - dist/assets/scripts/discourse-test-load-dynamic-js.js: 1.14 kB (599 B gzipped)
 - dist/assets/scripts/module-shims.js: 771 B (326 B gzipped)
 - dist/assets/scripts/start-app.js: 220 B (177 B gzipped)
 - dist/assets/splash-screen.js: 1.17 kB (551 B gzipped)
 - dist/assets/start-discourse.js: 518 B (345 B gzipped)
 - dist/assets/test-i18n.js: 600.6 kB (144.43 kB gzipped)
 - dist/assets/test-site-settings.js: 17.13 kB (5.41 kB gzipped)
 - dist/assets/vendor.47fe1949ff0285dbc995d87a6ae0d449.js: 450.35 kB (126.53 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-cacheable-response.dev.js: 6.93 kB (1.79 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-cacheable-response.prod.js: 603 B (354 B gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.dev.js: 37.73 kB (8.89 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.prod.js: 3.13 kB (1.46 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-expiration.dev.js: 32.82 kB (8.82 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-expiration.prod.js: 6.37 kB (2.51 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.dev.js: 33.29 kB (7.73 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.prod.js: 3.5 kB (1.47 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-strategies.dev.js: 52.47 kB (10.13 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-strategies.prod.js: 6.88 kB (2.29 kB gzipped)
 - dist/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-sw.js: 1.36 kB (749 B gzipped)
 - dist/javascripts/@json-editor/json-editor/2.10.0/jsoneditor.js: 523.75 kB (99.29 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/ace.js: 371.81 kB (101.02 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/ext-searchbox.js: 11.91 kB (3.57 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/mode-html.js: 60.88 kB (18.24 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/mode-scss.js: 24.03 kB (7.98 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/mode-sql.js: 4.84 kB (1.86 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/mode-yaml.js: 5.09 kB (1.77 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/theme-chaos.js: 3.18 kB (1.04 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/theme-chrome.js: 3.04 kB (1.06 kB gzipped)
 - dist/javascripts/ace.js/1.4.13/worker-html.js: 208.1 kB (47.44 kB gzipped)
 - dist/javascripts/ace/ace.js: 370.75 kB (100.77 kB gzipped)
 - dist/javascripts/ace/ext-searchbox.js: 11.91 kB (3.57 kB gzipped)
 - dist/javascripts/ace/mode-html.js: 60.88 kB (18.24 kB gzipped)
 - dist/javascripts/ace/mode-scss.js: 24.03 kB (7.98 kB gzipped)
 - dist/javascripts/ace/mode-sql.js: 2.21 kB (1.01 kB gzipped)
 - dist/javascripts/ace/mode-yaml.js: 5.09 kB (1.77 kB gzipped)
 - dist/javascripts/ace/theme-chrome.js: 3.04 kB (1.06 kB gzipped)
 - dist/javascripts/ace/worker-html.js: 208.1 kB (47.44 kB gzipped)
 - dist/javascripts/chart.js/3.5.1/chart.min.js: 188.37 kB (65.2 kB gzipped)
 - dist/javascripts/chartjs-plugin-datalabels/2.2.0/chartjs-plugin-datalabels.min.js: 12.94 kB (5.24 kB gzipped)
 - dist/javascripts/count.js: 1.44 kB (636 B gzipped)
 - dist/javascripts/diffhtml/1.0.0-beta.30/diffhtml.min.js: 22.41 kB (8.53 kB gzipped)
 - dist/javascripts/embed-topics.js: 1.34 kB (630 B gzipped)
 - dist/javascripts/embed.js: 2.47 kB (1.01 kB gzipped)
 - dist/javascripts/magnific-popup/1.1.0/jquery.magnific-popup.min.js: 20.22 kB (7.35 kB gzipped)
 - dist/javascripts/media-optimization-worker.js: 5.01 kB (1.75 kB gzipped)
 - dist/javascripts/pikaday/1.8.2/pikaday.js: 42.54 kB (9.66 kB gzipped)
 - dist/javascripts/squoosh/mozjpeg_enc.js: 39.03 kB (10.74 kB gzipped)
 - dist/javascripts/squoosh/squoosh_resize.js: 4.53 kB (1.29 kB gzipped)
Done in 411.16s.
Purging temp files
Bundling assets
Downloading MaxMindDB...
#<Thread:0x00007f406e48b998 /var/www/discourse/lib/tasks/maxminddb.rake:62 run> terminated with exception (report_on_exception is true):
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
	from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
I, [2024-05-15T05:57:01.511924 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/ar-81f3ac81aed9f7f904285254b37b0b1d33d244dd682d5da0ba45102cc14caaa7.js
I, [2024-05-15T05:57:01.921053 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/be-37c82bb431be50caa51c31330d817bdb76eb4631f9cffe2b5921f6ad5d0c3ffb.js
I, [2024-05-15T05:57:02.398615 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/bg-2f287049bbf864fcadc79287cf0586779f35136a8cf295f188c6969dca5264e5.js
I, [2024-05-15T05:57:02.746156 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/bs_BA-a932f3e805508d7cd53373cd65c61fb0c62424ed01f1ea36a18b002642a334d5.js
I, [2024-05-15T05:57:03.028171 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/ca-a58d2204d009db2f0d81796eb2aadfb83bdb3b777b5d5cdb0a71da6caf04b453.js
I, [2024-05-15T05:57:03.359205 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/cs-338335c12489fbb5fcaa2abea14803f1932ab97e2ed150a712c02d01d054278d.js
I, [2024-05-15T05:57:03.880677 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/da-f1fe45b86ae3091e6ef81b9fe42f2668c14c493f43c50d9d7e2829122400ce08.js
I, [2024-05-15T05:57:04.228724 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/de-a801da1eae1b92a22ae1339d32c56016d9ce08b78b1cb50089cdc2a532964691.js
I, [2024-05-15T05:57:04.537521 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/el-2d0197ce3258f55d5a3cef2f55a7c3395dda2227ade71edb54d9f9b2165d7946.js
I, [2024-05-15T05:57:04.719839 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/en-f39170288306eccf15bf1172a32d1eee27b92d35898bde1e8ee8cf006ffc6a59.js
I, [2024-05-15T05:57:04.924198 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/en_GB-b95b974b3aaa560e063d71144f77409bfdb64ae2ea3f5a5dcbf53d7755ce01c3.js
I, [2024-05-15T05:57:05.238279 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/es-d4accf0d895d2ac2524bf692b3a839a30c828dae1c1e44bce2f88c821881c7fb.js
I, [2024-05-15T05:57:05.491921 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/et-87987e60e00c039f4039609ebd63b15a4001c1948daf180ba8fae8d4451a64dc.js
I, [2024-05-15T05:57:05.774837 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/fa_IR-41e20d202ab56ca06051d68c45f3b28920bede38fa0fe6db842ef7cde1289595.js
I, [2024-05-15T05:57:06.109122 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/fi-c11efdb1a20bb517653182cd4edca6f75fc11aa2369b0ea7b8701bf69273bcca.js
I, [2024-05-15T05:57:06.546236 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/fr-ae02cb1d5c71b6ccc8568a2e9a8ddbec60c8149070f4a50dd28cf2b3a75bee05.js
I, [2024-05-15T05:57:06.858581 #851353]  INFO -- : Writing /var/www/discourse/public/assets/locales/gl-c322f6d574733e8f17f3e1819e717beff8dcc031e0d8a5bf961f78fd03fa790a.js
Compressing: plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js
gzip -f -c -9 /var/www/discourse/public/assets/plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js > /var/www/discourse/public/assets/plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js --output=/var/www/discourse/public/assets/plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js.br


Done 'plugins/docker_manager_admin-8f271dcd122fa5e2b1fff94aa496e28ef6944fccb5c8e931a0e253d5f2cb8f6e.js' : 0.01 secs

Compressing: test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js
gzip -f -c -9 /var/www/discourse/public/assets/test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js > /var/www/discourse/public/assets/test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js --output=/var/www/discourse/public/assets/test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js.br


Done 'test-i18n-3253b35bc45c5ae54b790def3a33b0944f96609ff4ee7e195c800cef1978feaf.js' : 0.1 secs

Done 'Done compressing all JS files' : 33.61 secs

Start compiling CSS: 2024-05-15 05:57:55 UTC
-------------
Compiling CSS for default 2024-05-15 05:57:56 UTC
precompile target: desktop
precompile target: mobile
precompile target: admin
precompile target: wizard
precompile target: desktop_rtl
precompile target: mobile_rtl
precompile target: admin_rtl
precompile target: wizard_rtl
precompile target: chat
precompile target: checklist
precompile target: discourse-adplugin
precompile target: discourse-ai
precompile target: discourse-data-explorer
precompile target: discourse-details
precompile target: discourse-gamification
precompile target: discourse-lazy-videos
precompile target: discourse-local-dates
precompile target: discourse-narrative-bot
precompile target: discourse-policy
precompile target: discourse-presence
precompile target: discourse-solved
precompile target: discourse-topic-voting
precompile target: docker_manager
precompile target: footnote
precompile target: poll
precompile target: spoiler-alert
precompile target: chat_mobile
precompile target: discourse-ai_mobile
precompile target: discourse-gamification_mobile
precompile target: discourse-solved_mobile
precompile target: discourse-topic-voting_mobile
precompile target: chat_desktop
precompile target: discourse-ai_desktop
precompile target: discourse-gamification_desktop
precompile target: discourse-topic-voting_desktop
precompile target: poll_desktop
precompile target: chat_rtl
precompile target: checklist_rtl
precompile target: discourse-adplugin_rtl
precompile target: discourse-ai_rtl
precompile target: discourse-data-explorer_rtl
precompile target: discourse-details_rtl
precompile target: discourse-gamification_rtl
precompile target: discourse-lazy-videos_rtl
precompile target: discourse-local-dates_rtl
precompile target: discourse-narrative-bot_rtl
precompile target: discourse-policy_rtl
precompile target: discourse-presence_rtl
precompile target: discourse-solved_rtl
precompile target: discourse-topic-voting_rtl
precompile target: docker_manager_rtl
precompile target: footnote_rtl
precompile target: poll_rtl
precompile target: spoiler-alert_rtl
precompile target: chat_mobile_rtl
precompile target: discourse-ai_mobile_rtl
precompile target: discourse-gamification_mobile_rtl
precompile target: discourse-solved_mobile_rtl
precompile target: discourse-topic-voting_mobile_rtl
precompile target: chat_desktop_rtl
precompile target: discourse-ai_desktop_rtl
precompile target: discourse-gamification_desktop_rtl
precompile target: discourse-topic-voting_desktop_rtl
precompile target: poll_desktop_rtl
precompile target: desktop_theme Default
precompile target: desktop_theme DiscoTOC
precompile target: desktop_theme Cookie Consent Banner
precompile target: desktop_theme Dark-Light Toggle
precompile target: desktop_theme Discourse Navigation Menu Modifier
precompile target: desktop_theme discourse-gifs
precompile target: desktop_theme Discourse Top Contributors Sidebar
precompile target: desktop_theme discourse-search-banner
precompile target: desktop_theme Discourse Header Search
precompile target: mobile_theme Default
precompile target: mobile_theme DiscoTOC
precompile target: mobile_theme Cookie Consent Banner
precompile target: mobile_theme Dark-Light Toggle
precompile target: mobile_theme Discourse Navigation Menu Modifier
precompile target: mobile_theme discourse-gifs
precompile target: mobile_theme discourse-search-banner
precompile target: mobile_theme Discourse Header Search
precompile target: color_definitions Default (Light)
precompile target: color_definitions Default (Dark)
precompile target: color_definitions Default (Neutral)
precompile target: color_definitions Default (Grey Amber)
precompile target: color_definitions Default (Shades of Blue)
precompile target: color_definitions Default (Latte)
precompile target: color_definitions Default (Summer)
precompile target: color_definitions Default (Dark Rose)
precompile target: color_definitions Default (WCAG Light)
precompile target: color_definitions Default (WCAG Dark)
precompile target: color_definitions Default (Dracula)
precompile target: color_definitions Default (Solarized Light)
precompile target: color_definitions Default (Solarized Dark)
precompile target: color_definitions Default (Base)
Done compiling CSS: 2024-05-15 05:58:06 UTC
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
	from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:111:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands.rb:18:in `<main>'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

이제 사이트 전체가 다운되었고 접속 시 500 오류가 발생합니다.

접근할 수 있는 것은 로그뿐이며, 사이트 로드 시 로그에서 이 오류를 확인했습니다.

Message

ActionView::Template::Error (The asset "plugins/discourse-ai_admin.js" is not present in the asset pipeline.
)
app/helpers/application_helper.rb:92:in `script_asset_path'
app/helpers/application_helper.rb:142:in `block in preload_script'
app/helpers/application_helper.rb:141:in `map'
app/helpers/application_helper.rb:141:in `preload_script'
app/views/layouts/application.html.erb:38
app/views/layouts/application.html.erb:37:in `each'
app/views/layouts/application.html.erb:37
app/controllers/categories_controller.rb:93:in `block (2 levels) in index'
app/controllers/categories_controller.rb:61:in `index'
app/controllers/application_controller.rb:1102:in `add_link_header'
app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
app/controllers/application_controller.rb:423:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:236:in `call'

Backtrace

sprockets-rails (3.4.2) lib/sprockets/rails/helper.rb:84:in `compute_asset_path'
actionview (7.0.8.1) lib/action_view/helpers/asset_url_helper.rb:203:in `asset_path'
app/helpers/application_helper.rb:92:in `script_asset_path'
app/helpers/application_helper.rb:142:in `block in preload_script'
app/helpers/application_helper.rb:141:in `map'
app/helpers/application_helper.rb:141:in `preload_script'
app/views/layouts/application.html.erb:38
app/views/layouts/application.html.erb:37:in `each'
app/views/layouts/application.html.erb:37
actionview (7.0.8.1) lib/action_view/base.rb:244:in `public_send'
actionview (7.0.8.1) lib/action_view/base.rb:244:in `_run'
actionview (7.0.8.1) lib/action_view/template.rb:157:in `block in render'
activesupport (7.0.8.1) lib/active_support/notifications.rb:208:in `instrument'
actionview (7.0.8.1) lib/action_view/template.rb:361:in `instrument_render_template'
actionview (7.0.8.1) lib/action_view/template.rb:155:in `render'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionview (7.0.8.1) lib/action_view/renderer/template_renderer.rb:76:in `block in render_with_layout'
activesupport (7.0.8.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.8.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.8.1) lib/active_support/notifications.rb:206:in `instrument'
actionview (7.0.8.1) lib/action_view/renderer/template_renderer.rb:74:in `render_with_layout'
actionview (7.0.8.1) lib/action_view/renderer/template_renderer.rb:59:in `render_template'
actionview (7.0.8.1) lib/action_view/renderer/template_renderer.rb:11:in `render'
actionview (7.0.8.1) lib/action_view/renderer/renderer.rb:61:in `render_template_to_object'
actionview (7.0.8.1) lib/action_view/renderer/renderer.rb:29:in `render_to_object'
actionview (7.0.8.1) lib/action_view/rendering.rb:117:in `block in _render_template'
actionview (7.0.8.1) lib/action_view/base.rb:270:in `in_rendering_context'
actionview (7.0.8.1) lib/action_view/rendering.rb:116:in `_render_template'
actionpack (7.0.8.1) lib/action_controller/metal/streaming.rb:216:in `_render_template'
actionview (7.0.8.1) lib/action_view/rendering.rb:103:in `render_to_body'
actionpack (7.0.8.1) lib/action_controller/metal/rendering.rb:158:in `render_to_body'
actionpack (7.0.8.1) lib/action_controller/metal/renderers.rb:141:in `render_to_body'
actionpack (7.0.8.1) lib/abstract_controller/rendering.rb:27:in `render'
actionpack (7.0.8.1) lib/action_controller/metal/rendering.rb:139:in `render'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:22:in `block (2 levels) in render'
/usr/local/lib/ruby/3.2.0/benchmark.rb:311:in `realtime'
activesupport (7.0.8.1) lib/active_support/core_ext/benchmark.rb:14:in `ms'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:22:in `block in render'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:91:in `cleanup_view_runtime'
activerecord (7.0.8.1) lib/active_record/railties/controller_runtime.rb:34:in `cleanup_view_runtime'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:21:in `render'
app/controllers/categories_controller.rb:93:in `block (2 levels) in index'
actionpack (7.0.8.1) lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
app/controllers/categories_controller.rb:61:in `index'
actionpack (7.0.8.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.8.1) lib/abstract_controller/base.rb:215:in `process_action'
actionpack (7.0.8.1) lib/action_controller/metal/rendering.rb:165:in `process_action'
actionpack (7.0.8.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport (7.0.8.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
app/controllers/application_controller.rb:1102:in `add_link_header'
activesupport (7.0.8.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
i18n (1.14.4) lib/i18n.rb:322:in `with_locale'
app/controllers/application_controller.rb:423:in `with_resolved_locale'
activesupport (7.0.8.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.8.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.8.1) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.8.1) lib/action_controller/metal/rescue.rb:23:in `process_action'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.8.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.8.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.8.1) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.8.1) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.8.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.8.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.8.1) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.8.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionpack (7.0.8.1) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.8.1) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.8.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.8.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.8.1) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (7.0.8.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.8.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.8.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.8.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.8.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack (2.2.8.1) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.8.1) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.8.1) lib/rack/head.rb:12:in `call'
actionpack (7.0.8.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
rack (2.2.8.1) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.8.1) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.8.1) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.8.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
logster (2.19.1) lib/logster/middleware/reporter.rb:40:in `call'
railties (7.0.8.1) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.8.1) lib/rails/rack/logger.rb:27:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.8.1) lib/rack/method_override.rb:24:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.8.1) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.8.1) lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call'
message_bus (4.3.8) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:236:in `call'
railties (7.0.8.1) lib/rails/engine.rb:530:in `call'
railties (7.0.8.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.8.1) lib/rails/railtie

도움을 주시면 감사하겠습니다!

해결책은 CLI를 통해 ./launcher rebuild app 명령으로 이미지를 수동으로 다시 빌드하는 것으로 보입니다.

웹 관리 콘솔을 통해 docker_manager를 업그레이드할 때(3.3.0 beta1에서 3.3.0 beta2-dev로) 왜 MaxMind 오류가 발생하는지 모르겠지만, CLI를 통해서는 잘 작동합니다. 아마도 웹 콘솔에서 docker_manager를 업그레이드할 때, 의존성이 업데이트될 때까지 MaxMind를 업그레이드하지 않도록 확인하는 로직이 필요할까요?

또한 MaxMind는 사용자 ID를 요구하므로, 지금이 역방향 IP 조회를 위한 MAXMIND 구성을 추가하기에 좋은 시점입니다.

우리의 사이트에서 수동으로 디버깅을 해본 결과, /logs를 확인해보니 이 치명적 오류를 일으킨 플러그인이 Gamification이었습니다. 플러그인 없이 안전 모드(?safe_mode=no_plugins)로 포럼을 실행하면 CLI 재구축을 완료할 때까지 문제를 일으키는 플러그인을 일시적으로 비활성화할 수 있습니다. (Gamification이 유일한 문제가 아니라면, /logs에 다른 문제들도 나열되어 있을 것입니다)

plugins/discourse-ai_admin.js

치명적 오류 중 하나가 Discourse AI인 것으로 보입니다.

@hello-smile6 님이 이 치명적 오류의 원인으로 지목한 것은 node 버전 업데이트입니다.