فشل الترقية من 2.9.0.beta14 إلى 3.1.0.beta

أقوم بالترقية كل شهر، ودائمًا على بعض أنظمة التطوير أولاً، ثم الإنتاج.

خلال دورة هذا الشهر، فشلت الترقية على نظام التطوير الأول. تمت ترقية docker_manager بنجاح ولكن ترقية discourse فشلت مع:

عذرًا، حدث خطأ أثناء ترقية Discourse. يرجى التحقق من السجلات أدناه.

تطبيق Discourse معطل تمامًا (يعرض صفحة الخطأ 500 “Oops”).

إليك ما تحتويه السجلات على الشاشة:

********************************************************
*** يرجى التحلى بالصبر، قد تستغرق الخطوات التالية بعض الوقت ***
********************************************************
تدوير Unicorn، لتحرير الذاكرة
إعادة تشغيل pid Unicorn: 50
الانتظار حتى يعيد Unicorn التحميل.
الانتظار حتى يعيد Unicorn التحميل..
الانتظار حتى يعيد Unicorn التحميل...
الانتظار حتى يعيد Unicorn التحميل....
الانتظار حتى يعيد Unicorn التحميل.....
الانتظار حتى يعيد Unicorn التحميل......
الانتظار حتى يعيد Unicorn التحميل.......
الانتظار حتى يعيد Unicorn التحميل........
الانتظار حتى يعيد Unicorn التحميل.........
الانتظار حتى يعيد Unicorn التحميل..........
الانتظار حتى يعيد Unicorn التحميل...........
إيقاف 7 عامل(عاملين) Unicorn، لتحرير الذاكرة
إيقاف طابور المهام لاستعادة الذاكرة، pid الرئيسي هو 4069
$ cd /var/www/discourse & git fetch --tags --force & git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [tag update]            latest-release -> latest-release
 * [new tag]               v2.8.14        -> v2.8.14
 * [new tag]               v3.0.0         -> v3.0.0
HEAD is now at 666536cbd1 DEV: Prefer \A and \z over ^ and $ in regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Bundler 2.3.13 is running, but your lockfile was generated with 2.4.1. Installing Bundler 2.4.1 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.1
Installing bundler 2.4.1
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Fetching gem metadata from https://rubygems.org.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 7 Unicorn worker(s) that were stopped initially

لم أواجه خطأ في الترقية من قبل، لذا لست متأكدًا مما يجب فعله بعد ذلك. وإذا حدث هذا في بيئة الإنتاج، فماذا سأفعل؟

إعجابَين (2)

أقترح عليك التحقق من إصدار نظام التشغيل (التوزيعة) الذي تستخدمه: قد يكون إصدارًا قديمًا، ولا يحتوي على Ruby 3، وهذا هو السبب في المشكلة.

تعديل: انتظر، لست متأكدًا مما إذا كنت قد أخطأت. للإنتاج، كل شيء يحدث داخل حاوية Docker التي يجب أن تحتوي على جميع الإصدارات الصحيحة لكل شيء. هل لديك إعداد من نوع آخر؟

إعجابَين (2)

على أي حال، صناديق التطوير تعمل بنظام Ubuntu 20.04 LTS. أعتقد أن بيئة الإنتاج تعمل بنظام 22.04 LTS.

ومع ذلك، لم أقم بتثبيت Ruby على نظام التشغيل مطلقًا. أعتقد أن كل ذلك يحدث تلقائيًا في حاوية Docker.

تصحيح: بيئة الإنتاج تعمل أيضًا بنظام 20.04 LTS.

إعجاب واحد (1)

نعم، آسف، أعتقد أنني كنت مرتبكًا. ليس من غير الشائع الحاجة إلى إجراء ترقية عبر سطر الأوامر - هل جربت ذلك؟

cd /var/discourse
git pull
./launcher rebuild app
6 إعجابات

إذا كانت هذه تثبيتات تطوير، فلن تكون ممثلة لتثبيت Docker إنتاجي. بيئة التطوير الخاصة بك تحتوي على إصدار قديم من Ruby (2.7)، بينما قامت Discourse مؤخرًا بالترقية إلى 3.1 في الصورة.

شكرا! يبدو أن إعادة بناء التطبيق قد نجحت. أنا أجرب هذا على نظام تطوير آخر قبل تصحيح الإنتاج.

لتوضيح الأمر، أعني بـ “التطوير” أنها ببساطة مثل الإنتاج ولكن على أنظمة التطوير الداخلية.

إعجاب واحد (1)

هل أدى الترقية عبر bash إلى حل الأمور؟

إعجاب واحد (1)

نعم! لقد نجحت على كل من أنظمة التطوير والإنتاج أيضًا. شكرًا!

3 إعجابات

هذا يحدث لي أيضًا في بيئتي الإنتاجية.

من 2.9.0.beta14 (2b9fa41a6e) إلى 3.1.0.beta1

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 يتطلب إصدار ruby >= 3.0، وهو غير متوافق مع
الإصدار الحالي، 2.7.6
Docker Manager: فشل الترقية
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
جارٍ تشغيل عامل Unicorn واحد (توقف في البداية)

تم الحل باستخدام :point_up:

cd /var/discourse
git pull
./launcher rebuild app

شكرا

نفس المشكلة هنا، فشل الترقية وقام بتدمير المنتدى إلى أخطاء 500. بصراحة، أنا متفاجئ إلى حد ما أن هذه المشكلة استمرت لمدة 3 أيام حتى الآن.

على أي حال، أنا أقوم الآن بإعادة بناء سطر الأوامر (CLI) والتي آمل أن تنجح. إذا لم يكن الأمر كذلك، فقد أخذت لقطة من جهاز افتراضي أولاً لأن أمي لم تربي أحمقًا.

من هذا المنشور يبدو أنهم قاموا بترقية Ruby إلى 3.0 مما يكسر تمامًا ترقيات الويب. لسوء الحظ، لا يزال البرنامج يسمح للمستخدمين بتجربتها، وبعد ذلك سترى مدى سرعة استجابة مضيفك لأخطاء HTTP 500.

تعديل: نجحت إعادة بناء سطر الأوامر (CLI) بالفعل، الحمد لله!

الأخطاء ذات الصلة:

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.