كيفية إعادة الاتصال بالرأس بعد التعامل سابقًا مع تحديث معطل؟

كانت هناك بعض المشاكل قبل عدة أشهر وفي النهاية اضطررت للعودة إلى 2.9.0.beta1 ولم أتمكن من التحديث أكثر من ذلك في ذلك الوقت.

بسبب ظروف قاهرة مختلفة، اضطررت إلى الابتعاد عن هذا المشروع لبعض الوقت وأنا الآن فقط أعود إليه. اكتشفت أن المشكلة الجذرية كانت أن خادم قاعدة بيانات PostgreSQL لم يتم ترقيته بشكل كافٍ وصحيح، وقد تم حل هذه المشكلة الآن وهو يعمل على PostgresQL 14.x و Discourse يعمل أيضًا على هذا الإصدار من قاعدة البيانات الآن.

للأسف، عندما حاولت الترقية مرة أخرى عبر واجهة مستخدم الترقية العادية عبر الويب، أشارت إلى أن fatal: HEAD does not point to a branch (الخطأ الكامل هنا):

fatal: HEAD does not point to a branch
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:203:in `run'
...

اعتقدت أنه ربما يمكنني القيام بـ /var/discourse/launcher rebuild app، لكنه لم ينجح أيضًا وأدى فقط إلى بدء تشغيل نفس الإصدار مرة أخرى، لكنني لاحظت المخرجات التالية:

$ ./launcher rebuild app
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20220818-0047: Pulling from discourse/base
1efc276f4ff9: Pull complete
1b880e64942b: Pull complete
794f6dc9a2ff: Pull complete
Digest: sha256:7734701087766821ffb2ddcef423754798bd345c2ac0d550131c6e6905c268e8
Status: Downloaded newer image for discourse/base:2.0.20220818-0047
docker.io/discourse/base:2.0.20220818-0047
...
I, [2022-09-13T02:09:12.828649 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2022-09-13T02:09:12.829826 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2022-09-13T02:09:13.957219 #1]  INFO -- :
I, [2022-09-13T02:09:13.958187 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth=1 origin tag v2.9.0.beta2 --no-tags
From https://github.com/discourse/discourse
 * [new tag]           v2.9.0.beta2 -> v2.9.0.beta2
I, [2022-09-13T02:09:18.214516 #1]  INFO -- :
I, [2022-09-13T02:09:18.215535 #1]  INFO -- : > cd /var/www/discourse && git checkout v2.9.0.beta2
Note: switching to 'v2.9.0.beta2'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -
Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 88a85843 FIX: Cooking custom emojis should not use a secure URL (#15929)
I, [2022-09-13T02:09:19.557296 #1]  INFO -- :
...

لقد قمت بالتراجع عن هذه التغييرات عن طريق استعادة نسخة احتياطية وفكرت في طلب بعض المدخلات هنا أولاً حول كيفية وكيف يجب أن أعيد ربط Discourse بشكل صحيح بـ HEAD على main والبدء في البناء مرة أخرى مع أحدث إصدار تجريبي - وبعد أن أتمكن أخيرًا من تحديث هذا إلى أحدث إصدار، أود تثبيته في تحديث إصدار مستقر في المستقبل. لقد استخدمت الإصدارات التجريبية لحل مشكلة كنت أواجهها هذا العام، لكن هذه كانت مغامرة كافية بالنسبة لي. :laughing:

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

يجب عليك فقط إجراء إعادة بناء من سطر الأوامر.

Hmm لدي بعض الأفكار @pfaffman:

  • شكراً على لفت انتباهي لذلك. لقد انشغلت بتحديث PGSQL لدرجة أنني نسيت أنني بحاجة إلى الانتقال إلى 13 بدلاً من 14. أعتقد أنني سأبكي!
  • هل رأيت أحداً يقوم بترقية قاعدة بيانات بنجاح من 14 إلى 13؟
  • من الناحية النظرية، يجب أن أتمكن من إضافة مجموعة أخرى لـ 13 إلى الخادم بحيث يتم تشغيل كل من 13 و 14، لكنني ملتزم تماماً بـ 14 الآن مع تشغيل العديد من الخدمات الأخرى على نفس الخادم ولا يمكنني العبث بها أكثر من ذلك - لذا فإن أملي الوحيد هو تثبيت نسخة 13 وترقية Discourse الخاصة بها…
  • لقد جربت أمر إعادة البناء، لكنه لم ينجح. أنت تشير إلى ما شاركته أعلاه، صحيح؟: /var/discourse/launcher rebuild app,

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

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

أنا أعرف بالضبط ما تشعر به.

هذا ليس مجال خبرتي. من الأسهل بكثير تحديث الحاوية لتضمين أدوات pg14. طالما أنك لا ترغب في استعادة موقع pg13، فستكون بخير.

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