خطأ في وقت التشغيل أثناء الترقية إلى v3.0.3

لقد استجبت للتو لإشعار البريد الإلكتروني “الترقية بنقرة واحدة” لإصدار جديد من الأمان وإصلاح الأخطاء إلى 3.0.3، من إصداري الحالي 3.0.1

تمت ترقية Docker Manager الأولية بشكل جيد (وفقًا لتقرير تقدم الترقية في صفحة الويب للترقية)، ولكن عندما قمت لاحقًا بالنقر فوق “ترقية الكل” لترقية مكونات Discourse المتبقية التي تظهر كإصدار جديد متاح، فشلت هذه العملية، مما ترك موقعي غير متصل بالإنترنت.

من الغريب، تم الإشارة إلى Docker Manager مرة أخرى هنا في تقرير تقدم الترقية اللاحق، على الرغم من أنه تم بالفعل ترقيته بشكل منفصل - هذه المرة أبلغ عن أنه “فشل في الترقية”، و “RuntimeError”.

هل أنا على صواب في تفسير أن هذا كان بسبب إصدار قديم من Ruby مثبت على قطرة Digital Ocean الخاصة بي (v3.1، بدلاً من v3.2)؟ إذا كان الأمر كذلك، كنت آمل أن يتم ذكر أي تبعية جديدة من هذا القبيل في ملاحظات التحديث (لم تكن مشكلة مع التحديث السابق)، إن لم يتم التعامل معها بشكل أكثر سلاسة بواسطة المثبت بنقرة واحدة؟

أدناه محتويات نافذة تقرير تقدم الترقية اللاحقة هذه

********************************************************
*** يرجى التحلي بالصبر، قد تستغرق الخطوات التالية وقتًا طويلاً ***
********************************************************
تدوير Unicorn، لتحرير الذاكرة
إعادة تشغيل Unicorn pid: 575
انتظار Unicorn لإعادة التحميل.
انتظار Unicorn لإعادة التحميل..
انتظار Unicorn لإعادة التحميل...
انتظار Unicorn لإعادة التحميل....
انتظار Unicorn لإعادة التحميل.....
انتظار Unicorn لإعادة التحميل......
انتظار Unicorn لإعادة التحميل.......
انتظار Unicorn لإعادة التحميل........
انتظار Unicorn لإعادة التحميل.........
استخدام net-protocol 0.2.1
جلب addressable 2.8.4
تثبيت addressable 2.8.4
استخدام aws-sigv4 1.5.0
استخدام openssl-signature_algorithm 1.3.0
استخدام sprockets 3.7.2 من https://github.com/rails/sprockets (في 3.x@f4d3dae)
استخدام request_store 1.5.1
استخدام message_bus 4.3.2
استخدام pry 0.14.2
جلب rack-mini-profiler 3.1.0
تثبيت rack-mini-profiler 3.1.0
جلب rack-protection 3.0.6
تثبيت rack-protection 3.0.6
استخدام ecma-re-validator 0.4.0
استخدام faraday 2.7.4
استخدام image_optim 0.31.3
استخدام logstash-logger 0.26.1
استخدام mini_racer 0.6.3
استخدام mini_suffix 0.3.3
استخدام omniauth 1.9.2
استخدام uglifier 4.2.0
استخدام web-push 3.0.0
استخدام sidekiq 6.5.8
استخدام redis-namespace 1.10.0
استخدام net-http 0.3.2
استخدام oauth-tty 1.0.5
استخدام snaky_hash 2.0.1
استخدام activesupport 7.0.4.3
جلب sass-embedded 1.62.0 (x86_64-linux-gnu)
تثبيت sass-embedded 1.62.0 (x86_64-linux-gnu)
استخدام rqrcode 2.1.2
استخدام rss 0.2.9
جلب tzinfo-data 1.2023.3
تثبيت tzinfo-data 1.2023.3
استخدام unf 0.1.4
استخدام unicorn 6.1.0
جلب loofah 2.20.0
تثبيت loofah 2.20.0
استخدام ruby-readability 0.7.0
استخدام sanitize 6.0.1
استخدام net-imap 0.3.4
استخدام net-pop 0.1.2
استخدام net-smtp 0.3.3
استخدام css_parser 1.14.0
استخدام aws-sdk-core 3.130.2
استخدام cose 1.3.0
استخدام pry-byebug 3.10.1
استخدام pry-rails 0.3.9
استخدام json_schemer 0.2.23
استخدام faraday-retry 2.1.0
استخدام oauth2 1.4.11
استخدام rtlcss 0.2.0
استخدام rails-dom-testing 2.0.3
استخدام globalid 1.1.0
استخدام activemodel 7.0.4.3
استخدام mini_scheduler 0.15.0
استخدام oauth 1.1.0
استخدام dartsass-ruby 3.0.1
استخدام rails-html-sanitizer 1.5.0
جلب mail 2.8.1
تثبيت mail 2.8.1
استخدام aws-sdk-kms 1.56.0
استخدام aws-sdk-sns 1.53.0
استخدام actionview 7.0.4.3
استخدام activejob 7.0.4.3
استخدام active_model_serializers 0.8.4
استخدام activerecord 7.0.4.3
استخدام omniauth-oauth2 1.7.3
استخدام omniauth-oauth 1.2.0
استخدام aws-sdk-s3 1.114.0
استخدام actionpack 7.0.4.3
استخدام actionview_precompiler 0.2.3
استخدام discourse-seed-fu 2.3.12
استخدام omniauth-facebook 9.0.0
استخدام omniauth-github 1.4.0
استخدام omniauth-google-oauth2 0.8.2
استخدام omniauth-twitter 1.4.0
استخدام actionmailer 7.0.4.3
استخدام railties 7.0.4.3
استخدام sprockets-rails 3.4.2
استخدام dartsass-sprockets 3.0.0
استخدام lograge 0.12.0
جلب rails_failover 1.0.0
تثبيت rails_failover 1.0.0
استخدام rails_multisite 4.0.1
جلب puma 6.2.2
تثبيت puma 6.2.2 مع امتدادات أصلية
استخدام bootsnap 1.16.0
استخدام rbtrace 0.4.14
اكتملت الحزمة! 136 تبعيات Gemfile، 174 جوهرة مثبتة الآن.
لم يتم تثبيت الجواهر في مجموعات 'test' و 'development'.
تم تثبيت الجواهر المجمعة في './vendor/bundle'
$ yarn install --production
yarn install v1.22.19
[1/5] التحقق من صحة package.json...
[2/5] حل التبعيات...
[3/5] جلب الحزم...
[4/5] ربط التبعيات...
تحذير " > @mixer/parallel-prettier@2.0.3" لديها تبعية نظير غير ملباة "prettier@^2.0.0".
تحذير "eslint-config-discourse > eslint-plugin-lodash@7.1.0" لديها تبعية نظير غير ملباة "lodash@>=4".
[5/5] بناء حزم جديدة...
$ yarn --cwd app/assets/javascripts $(node -e 'if(JSON.parse(process.env.npm_config_argv).original.includes(`--frozen-lockfile`)){console.log(`--frozen-lockfile`)}')
yarn install v1.22.19
[1/4] حل التبعيات...
[2/4] جلب الحزم...
[3/4] ربط التبعيات...
تحذير " > babel-plugin-debug-macros@0.4.0-pre1" لديها تبعية نظير غير ملباة "@babel/core@^7.0.0".
تحذير "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" لديها تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
تحذير "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" لديها تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
تحذير "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" لديها تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
[4/4] بناء حزم جديدة...
نجاح حفظ ملف القفل.
$ patch-package
patch-package 6.5.1
تطبيق التصحيحات...
@ember/jquery@2.0.0 ✔
virtual-dom@2.1.1 ✔
تم في 23.96 ثانية.
تم في 40.79 ثانية.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
يتطلب Discourse Ruby 3.2 أو أعلى
غير قادر على سحب إصدارات المكونات المتوافقة
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
يتطلب Discourse Ruby 3.2 أو أعلى
Docker Manager: فشل الترقية
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:202:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101: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.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
تشغيل 1 عامل Unicorn (تم إيقافه مبدئيًا)

سأمر بالخطوات لإعادة بناء موقعي عبر Putty، ولكنني أبلغ عن ما سبق في حال وجود خطأ في المثبت.

3 إعجابات

أواجه شيئًا مشابهًا. عالق في المنتدى حاليًا . . .

سأعرف المزيد غدًا عندما لا أكون على وشك النوم. أعتقد أن هذا “أؤيد ذلك”.

  • ووكر
إعجاب واحد (1)

تحتاج إلى سحب إصدار جديد من صورة Docker.

بالمناسبة - هذا الخطأ يحدث فقط في الإصدار 3.1.0.beta4 وما فوق، وليس في الإصدار 3.0.3 المستقر.

إعجابَين (2)

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

لذا ستحتاج إلى

./launcher rebuild app

4 إعجابات

شكراً - نعم تم حل المشكلة بالنسبة لي عند إعادة البناء عبر Putty.

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

نعم، حدث هذا مؤخرًا جدًا. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

يجب أن يطالب Docker Manager بإعادة بناء سطر الأوامر عند عدم تلبية هذا المتطلب. :thinking:

4 إعجابات

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

3 إعجابات

هل يمكنك تأكيد هذه الإصدارات؟ كما ذكر @RGJ في منشور أدناه، فإن الإصدارات المستقرة لا تتطلب Ruby 3.2، لذلك لا ينبغي أن ترى تلك الأخطاء أثناء الترقية في الفرع المستقر.

هل حاولت عن طريق الخطأ الترقية من v3.1.0.beta1 (أو إصدار أقدم) إلى v3.1.0.beta4؟

المشكلة هي أننا نثبت docker_manager على إصدار قديم لـ Discourse v3.1.0.beta1 وما دونه. سترى شيئًا كهذا.

ستتطلب الترقية إلى v3.1.0.beta4 Ruby 3.2، ولكن هناك احتمال أنك تستخدم صورة Docker لم تأتِ مع Ruby 3.2 بعد. يعتقد docker_manager القديم أن هذا جيد، لذلك يسمح لك بالترقية في واجهة المستخدم، بينما يجب أن يطالب بإعادة بناء سطر الأوامر.

أنا في طور إعادة إنتاج المشكلة. أعتقد أن الإصلاح سيكون إجراء تغييرات على الإصدار المثبت، بحيث يطالب بإعادة بناء سطر الأوامر. سأحاول التوصل إلى إصلاح…

إعجابَين (2)

رأيت هذا لموقعين يوم أمس كانا في مرحلة الاختبارات الناجحة. لست متأكدًا تمامًا من الإصدار الذي كانا يقومون بالترقية منه. آسف لعدم توفر بيانات أفضل.

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

لا يمكنني التأكد الآن بعد اكتمال الترقية - ولكني أعتقد أنه ربما كان إصدار 3.0.1 بيتا الذي كنت أقوم بالترقية منه ** تعديل ** - وليس إصدار 3.10 بيتا

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

انتظر. لا يمكنك الانتقال من 3.1 بيتا إلى 3.0.3 مستقر؟

حسنًا، لقد تغير الإصدار مرة أخرى، لكنني متأكد تمامًا من أنني كنت أحاول الترقية من الإصدار 3.0.1 (ربما إصدار تجريبي) إلى الإصدار المستقر 3.0.3، والذي بدا في ذلك الوقت أنه أحدث خيار مستقر. . أرى أنه بعد فشل ذلك وأعدت البناء في Putty، فإن النتيجة قد تجاوزت الإصدار المقصود 3.0.3، وقامت بالفعل بتثبيت الإصدار التجريبي 4 من 3.1.0.

نعم، فشل ذلك، لأنه لا يمكنك الانتقال من الإصدار التجريبي 3.1 إلى الإصدار المستقر 3.0.

لم أبدأ من الإصدار التجريبي 3.1. لقد بدأت من الإصدار التجريبي 3.0.1

لا يوجد 3.01، بل إما 3.0.1 أو 3.1.0.
لكن هذا لا يهم حقًا. لقد حدث موقفك لأنك كنت ستنتقل إلى الإصدار التجريبي 4 من 3.1.0.

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

هذه هي وجهة نظري - لقد بدأت من الإصدار التجريبي 3.0.1، وكان إشعار الترقية بنقرة واحدة عبر البريد الإلكتروني يشير إلى الإصدار المستقر 3.0.3 - والذي فشل الترقية. في تلك المرحلة، لم يتم تقديم خيار لي للانتقال إلى الإصدار التجريبي 3.1.0.

ربما كان جزء من المشكلة هو أنه بدلاً من تثبيت الإصدار المستقر 3.0.3 “المعلن عنه”، حاول المُحدِّث تثبيت الإصدار التجريبي 3.1.0؟

في كلتا الحالتين، على حد علمي، السبب الوحيد لتثبيت الإصدار التجريبي 3.1.0 الآن هو إعادة البناء عبر Putty، والذي جلب أحدث إصدار تجريبي، وليس أحدث إصدار مستقر.

سيتم إصلاح السبب الجذري بمجرد دمج FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub.

4 إعجابات