ساعدني في تصحيح أخطاء عمليات الترحيل الفاشلة PushFixTopicEmbedAuthorsJob

حسنًا، هذا منطقي :+1:.

طالما أن الإضافات المضافة ليست ممكّنة افتراضيًا، على الأقل ليس للمثيلات الموجودة، فكل شيء على ما يرام. ولكن فيما يتعلق بتغييرات تبعية الجواهر، وفشل ترحيل قواعد البيانات المتعددة التي واجهناها، فإنني قلق بعض الشيء من أن شيئًا ما قد يكون مكسورًا أو مفقودًا بشكل غير مرئي. للأسف، لا يقوم إعادة البناء بتسجيل أي شيء في هذه الأمور، فقط يقول إن cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' خرج برمز خطأ، ولكن لا توجد تفاصيل، ولا حتى في السجلات :thinking:.

هذا يبدو غريبًا، هل تقوم بتشغيل PG في حاوية منفصلة، هل تحتوي على pgvector مثبتًا؟

بشكل عام، عندما تفشل الأشياء، يمكنك التمرير لأعلى قليلاً والعثور على الخطأ، بسبب التسلسل غالبًا ما تكون الأخطاء على بعد 100 سطر.

فقط حاوية Discourse Docker المستقلة. أيضًا، لم أكن دقيقًا تمامًا، بالفعل هناك المزيد من المخرجات حول هذا الموضوع، ولكن لا شيء يمكنني فهمه بشكل كافٍ:

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1454:in `migrate' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1261:in `up’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1236:in `migrate' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/tasks/database_tasks.rb:270:in `migrate’
/var/www/discourse/lib/tasks/db.rake:267:in `block (2 levels) in <main>’ /var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize' /var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize’
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize' /var/www/discourse/lib/tasks/db.rake:242:in `block in ’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>' /usr/local/bin/bundle:25:in `load’
/usr/local/bin/bundle:25:in `’
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
I, [2025-07-29T20:36:15.074727 #1]  INFO – : == 20180828095129 PushFixTopicEmbedAuthorsJob: migrating ==========
== 20180828095129 PushFixTopicEmbedAuthorsJob: migrated (0.0021s) =============

I, [2025-07-29T20:36:15.075331 #1]  INFO – : Terminating async processes
I, [2025-07-29T20:36:15.075355 #1]  INFO – : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 45
I, [2025-07-29T20:36:15.075376 #1]  INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 112
2025-07-29 20:36:15.075 UTC [45] LOG:  received fast shutdown request
112:signal-handler (1753821375) Received SIGTERM scheduling shutdown…
2025-07-29 20:36:15.091 UTC [45] LOG:  aborting any active transactions
2025-07-29 20:36:15.092 UTC [45] LOG:  background worker “logical replication launcher” (PID 59) exited with exit code 1
2025-07-29 20:36:15.092 UTC [54] LOG:  shutting down
2025-07-29 20:36:15.105 UTC [54] LOG:  checkpoint starting: shutdown immediate
112:M 29 Jul 2025 20:36:15.125 # User requested shutdown…
112:M 29 Jul 2025 20:36:15.125 * Saving the final RDB snapshot before exiting.
112:M 29 Jul 2025 20:36:15.247 * DB saved on disk
112:M 29 Jul 2025 20:36:15.247 # Redis is now ready to exit, bye bye…
2025-07-29 20:36:15.273 UTC [54] LOG:  checkpoint complete: wrote 10 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.066 s, sync=0.046 s, total=0.181 s; sync files=9, longest=0.026 s, average=0.006 s; distance=36 kB, estimate=36 kB
2025-07-29 20:36:15.276 UTC [45] LOG:  database system is shut down

## FAILED

Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c ‘bundle exec rake db:migrate’ failed with return #<Process::Status: pid 635 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn’
`exec failed with the params {“cd”=>“$home”, “tag”=>“migrate”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}’
`bootstrap failed with exit code 1`
`** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.`
`./discourse-doctor may help diagnose the problem.`

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

من المثير للاهتمام أن هذا هو الترحيل

إنه يتبع نمطًا لا ينبغي لنا اتباعه حقًا.

سأجعل شخصًا ما ينظر في هذا!

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

إذًا، لقد حاول ترحيلًا لإضافة لم تكن موجودة من قبل وليست ممكّنة؟ أي فكرة لماذا نجح بعد محاولات إعادة بناء متعددة؟

هل كل شيء يعمل الآن؟
أنا مرتبك بعض الشيء بشأن سبب فشله، لكن يمكنني رؤية المشكلة هنا، نحن نستدعي رمز التطبيق من ترحيل وهو هش للغاية.

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

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

إعجابَين (2)

سيؤدي هذا إلى تصحيح المشكلة الأساسية هنا.

إعجابَين (2)