الترقيات عبر واجهة المستخدم معطلة - ولا يتم إعادة تمكينها بعد ترقية SSH

لقد تلقيت هذه الرسالة عند محاولة الترقية عبر واجهة المستخدم:

بعد عدة عمليات سحب وإعادة بناء باستخدام git، ما زلت أتلقى نفس الرسالة. أي نصائح؟

أتساءل عما إذا كنت بحاجة إلى القيام بذلك:

هذا لمنتدى قديم وراسخ.

نسخ @pacharanero

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

يجب عليك إبقاء نظام التشغيل الخاص بك محدثًا كما هو موصى به في الموضوع الذي ربطته، ولكن هذا غير مرتبط بالمشكلة التي تصفها.

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

لقد كان تثبيتًا قياسيًا، ولكن التثبيت الأصلي كان في عام 2014، في الأيام الأولى عندما لم يخرج Discourse طويلاً من النسخة التجريبية العامة.

user@server:/var/discourse$ docker -v
Docker version 19.03.13, build 4484c46d9d

هناك إصدار أحدث من Docker، ولكن من الشائع أن يتأخر الإصدار الموجود في Ubuntu قليلاً عن أحدث إصدار.

نظام التشغيل محدث بالكامل وبانتظام.

هممم. هناك تأخير بعد التحديث قبل أن يتحقق Discourse مما إذا كانت الحاوية قد أعيد بناؤها، على الرغم من أنني لم أعرف أبدًا أنه يؤثر على docker-manager.

يمكنك تجربة هذا:

docker exec app bash -c 'rails runner AdminDashboardGeneralData.refresh_stats

ولكن لقد مر وقت طويل الآن، ولا أعتقد أن هذه هي مشكلتك. لا يمكن أن يضر، على الرغم من ذلك.

لا أتذكر الحد الأدنى للإصدار المدعوم من docker، ولكن لا أعتقد أن هذه هي المشكلة أيضًا، على الأقل إذا لم تكن على Ubuntu 16.04.

هل هناك أي طريقة يمكن أن يكون الأمر متعلقًا بالفرع الذي نقوم بتشغيله؟

في containers/app.yml نختار صراحةً tests-passed

ولكن بالطبع هذا هو ما يتم تشغيله داخل الحاوية. هل يهم ما هو الفرع الافتراضي خارج الحاوية؟

user@server:/var/discourse# git status
On branch master
Your branch is up to date with 'origin/master'.

في الماضي، كان master هو الافتراضي في GitHub. الآن هو main.

حسنًا. أعتقد أنه يمكنك تجربة

cd /var/discourse
git checkout main

لكنني لم أعتقد أنك بحاجة إلى القيام بذلك بشكل صريح.

ماذا عن

cd /var/discourse
./launcher enter app
cd /var/www/discourse
git status
إعجاب واحد (1)

يتعلق هذا بـ discourse_docker، بالطبع:

:/var/discourse# git remote -v
origin  https://github.com/discourse/discourse_docker.git (fetch)
origin  https://github.com/discourse/discourse_docker.git (push)

تم تبديل الفرع في أغسطس 2021 وهو متأخر بـ 49 التزامًا عن main في وقت الكتابة: GitHub - discourse/discourse_docker at master

إذًا، هل تريد بالتأكيد التبديل إلى الفرع الرئيسي؟

ومع ذلك، أتفق مع @pfaffman ولم أفعل ذلك صراحةً أبدًا، لذلك يجب أن يكون هناك بعض البرنامج النصي الذي قام بذلك. ربما سيحدث ذلك مع إعادة البناء التالية؟

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

يعيد

user@inside-container-app:/var/www/discourse# git status
Refresh index: 100% (30949/30949), done.
On branch tests-passed
Your branch is up to date with 'origin/tests-passed'.

يبدو أنك محدث. وهل ما زلت تحصل على صفحة الترقيات المعطلة؟

نعم. لقد نظرت في منصة Discourse أخرى أديرها وهي قديمة بعض الشيء، وهي أيضًا على master ولديها نفس صفحة “الترقيات معطلة”.

ومع ذلك، فإن منصة Discourse أخرى قمت بإعدادها في منتصف عام 2022 وهي أيضًا على master وتعرض شاشة التحديث بشكل طبيعي!

إذا تمكنا من الحصول على أي تأكيد بأن تغيير فرع discourse_docker لتتبع main سيؤدي إلى إصلاح ذلك، فأنا مستعد لتجربته. ربما على موقع يستخدمه أنا فقط.

هذا يتزامن تقريبًا مع الوقت الذي بدأت فيه أواجه سلوكًا غريبًا على بعض منصات Discourse حول وقت التحديث. (لهذا السبب انتهى بي الأمر بتحديثها جميعًا عبر SSH في كل مرة، باستخدام Ansible).

هذا هو بالضبط ما أفعله دائمًا أيضًا، على الرغم من أنني بشكل متزايد، أقوم بتشغيل برنامج Ansible النصي للترقية باستخدام https://www.pfaffmanager.com/.

حسنًا، لقد تحولت لتتبع main في Discourse أستخدمه فقط كمفكرة شخصية ومذكرات وما إلى ذلك.

قبل التبديل، كنت أتتبع master وكانت صفحة ترقية المسؤول معطلة بالفعل.

عند التبديل لتتبع main وإعادة البناء، يمكنني التأكيد على أن واجهة مستخدم ترقية المسؤول عادت للعمل بشكل طبيعي.

4 إعجابات

هممم. أتساءل عما إذا كان ذلك يعني أن كل تلك التثبيتات القديمة بحاجة إلى تغيير فرعها. @Falco، ربما تريد رؤية هذا.

يقوم المشغل بتغيير الفرع تلقائيًا من master إلى main. يبدو أن شيئًا ما كان يمنع التبديل التلقائي، مثل تغييرات التخزين المؤقت المعلقة.

إعجابَين (2)

ما مدى احتمالية حدوث ذلك في العديد من الحالات؟

وما هي تغييرات المخزون بحق الجحيم؟

عن كم نتحدث؟ هناك الآلاف من منتديات Discourse، ولا أرى عشرات التقارير عن هذه المشكلة. على الأقل ليس بعد :sweat_smile:

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

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

هممم. قد يكون هذا شيئًا متعلقًا به في نسختنا @nathank
لدي ملفان تشغيليان (لا علاقة لهما بقاعدة كود Discourse) في نفس الدليل مثل مستودع Git الخاص بـ Discourse. إذا حاول ./launcher تغيير الفرع، فسوف يخطئ Git، مما يتطلب مني تخزين هذه التغييرات مؤقتًا (أو الالتزام بها).

شكرًا @Falco سأقوم ببعض التحقيقات الإضافية. قد يكون أن نُسخ Discourse الوحيدة التي ستتأثر هي تلك التي يرمي فيها Git خطأ لأي سبب عند محاولة تغيير الفرع.

4 إعجابات

تحديث: أعتقد أن هذه المشكلة مع بعض الملفات غير المتعقبة *قد تكون هي المشكلة.
لقد قمت بإزالة الملفات وتأكدت من نجاح الأمر git checkout main.
ثم قمت بتشغيل ./launcher rebuild app ويبدو أنه نجح.

على حد علمي، وفقًا لما ذكره @Falco أعلاه، لا أعتقد أنه من الضروري فعليًا تتبع main في مستودع Discourse. عند تشغيل ./launcher rebuild app، سيقوم البرنامج النصي نفسه بسحب الفرع الصحيح.

3 إعجابات

كان لدي عدد قليل من منتديات Discourse القديمة التي لا تزال تعرض صفحة “الترقيات معطلة” على الرغم من التأكد من أن:

git checkout main
git pull
git checkout master

تمت بدون أخطاء.

وبالنسبة لهذه المنتديات، تركت ببساطة تلك النسخ تتبع main و ./auncher rebuild app وكان الأمر جيدًا.