أخطاء عند تصدير البيانات من Teams إلى Discourse المستضاف ذاتيًا على Digital Ocean

اليوم قمت باختبار إنشاء نسخة احتياطية كاملة لموقع Teams واستعادتها إلى موقع مستضاف ذاتيًا تم إعداده باستخدام discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. نجح الأمر. كانت خدمة S3 معطّلة مسبقًا، وسار كل شيء كما هو متوقع. كان موقع اختبار صغيرًا بدون محتوى كبير.

خطوة يجب وضعها في الاعتبار لضمان انتقال سلس هي التأكد من تثبيت جميع الإضافات التي كانت مفعّلة على موقع Teams. للعثور على هذه القائمة، انتقل إلى /admin/plugins في موقع Teams، ثم ابحث هنا في Meta عن الروابط الخاصة بالإضافات الرسمية على GitHub. بعد ذلك، أضف تلك الإضافات إلى ملف app.yml في موقعك الجديد المستضاف ذاتيًا.

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

إعجابَين (2)

مرحبًا أيها المجتمع،
تحديثات سريعة - تمكن توبياس وفريقه من إعادة استضافة فرقنا ونسخ الموقع بالكامل احتياطيًا (بما في ذلك الملفات المرفقة!)

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

لقد طلبت من توبياس وفريق discourse مشاركة ملف app.yml من موقع فرقنا أو الكود الذي يمكنني نسخه ولصقه، وهم حاليًا يساعدون في ذلك. لكنني أرحب بأي أفكار حول كيفية تشغيل الموقع، حتى لو تم تثبيت الإضافات لاحقًا.


فشلت عملية الاستعادة.

إليك السجل:

[2021-05-11 17:11:08] [STARTED]

[2021-05-11 17:11:08] بدأ 'biyaniyash' عملية الاستعادة!

[2021-05-11 17:11:08] جاري تحديد حالة الاستعادة على أنها قيد التنفيذ...

[2021-05-11 17:11:08] التأكد من وجود /var/www/discourse/tmp/restores/default/2021-05-11-171108...

[2021-05-11 17:11:08] جاري نسخ الأرشيف إلى مجلد tmp...

[2021-05-11 17:11:08] جاري فك ضغط الأرشيف، قد يستغرق ذلك بعض الوقت...

[2021-05-11 17:11:10] جاري استخراج ملف التصدير...

[2021-05-11 17:11:10] جاري التحقق من البيانات الوصفية...

[2021-05-11 17:11:10]   الإصدار الحالي: 20210420015635

[2021-05-11 17:11:10]   الإصدار المستعاد: 20210429154322

[2021-05-11 17:11:10] استثناء: أنت تحاول استعادة إصدار أحدث من مخطط قاعدة البيانات. يجب عليك إجراء الترقية أولاً!

[2021-05-11 17:11:10] /var/www/discourse/lib/backup_restore/meta_data_handler.rb:31:in `validate'

/var/www/discourse/lib/backup_restore/restorer.rb:113:in `validate_backup_metadata'

/var/www/discourse/lib/backup_restore/restorer.rb:43:in `run'

/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'

/var/www/discourse/script/spawn_backup_restore.rb:36:in `block in <main>'

/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'

/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

[2021-05-11 17:11:10] جاري محاولة التراجع...

[2021-05-11 17:11:10] لم يكن هناك حاجة للتراجع

[2021-05-11 17:11:10] جاري تنظيف الملفات...

[2021-05-11 17:11:10] جاري إزالة مجلد tmp '/var/www/discourse/tmp/restores/default/2021-05-11-171108'...

[2021-05-11 17:11:10] جاري تحديد حالة الاستعادة على أنها منتهية...

[2021-05-11 17:11:10] جاري إشعار 'biyaniyash' بنهاية عملية الاستعادة...
3 إعجابات

يبدو أن هذا السطر في سجلك هو الدليل:

[2021-05-11 17:11:10] استثناء: تحاول استعادة إصدار أحدث من المخطط. يجب عليك الهجرة أولاً!

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

فقط للتأكيد - هل قمت بتحديث discourse من سطر الأوامر، صحيح؟ باستخدام أمر ./launcher rebuild app.

إعجابَين (2)

يبدو أن هناك سكريبت هجرة لإضافة يتطلب تثبيت إضافات ‘assign’ و’policy’ و’solved’ على الأقل.

إليك القائمة الكاملة للإضافات التي ندرجها حاليًا في Teams - وهي قابلة للتغيير في المستقبل. يمكنك ببساطة نسخ/لصق هذه القائمة في ملف app.yml تحت السطر الذي يشير إلى مدير Docker. تأكد من مطابقة المسافة البادئة بدقة! جميع هذه الإضافات رسمية وآمنة للتثبيت حتى لو قررت عدم استخدامها. هناك بعض الإضافات الإضافية غير المدرجة هنا توفر شريط Teams الجانبي وميزات محددة لاستضافة Teams.

      - git clone https://github.com/discourse/discourse-assign.git
      - git clone https://github.com/discourse/discourse-cakeday.git
      - git clone https://github.com/discourse/discourse-calendar.git
      - git clone https://github.com/discourse/discourse-chat-integration.git
      - git clone https://github.com/discourse/discourse-checklist.git
      - git clone https://github.com/discourse/discourse-code-review.git
      - git clone https://github.com/discourse/discourse-docs.git
      - git clone https://github.com/discourse/discourse-encrypt.git
      - git clone https://github.com/discourse/discourse-footnote.git
      - git clone https://github.com/discourse/discourse-github.git
      - git clone https://github.com/discourse/discourse-graphviz.git
      - git clone https://github.com/discourse/discourse-math.git
      - git clone https://github.com/discourse/discourse-openid-connect.git
      - git clone https://github.com/discourse/discourse-policy.git
      - git clone https://github.com/discourse/discourse-shared-edits.git
      - git clone https://github.com/discourse/discourse-solved.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
3 إعجابات

مرحبًا توبياس،
شكرًا لك على القائمة!

أوه، قمت بالترقية عبر لوحة الإدارة.
ثم استعدت. فشلت.
ثم أضفت الإضافات إلى ملف app.yml. ثم أعيد البناء.
ثم استعدت. نجح.
ومع ذلك، نفس خطأ “أوه” في الواجهة الأمامية!

آرغ!

إعجابَين (2)

تقترب خطوة بخطوة! :snail:

هل يمكنك النظر في /logs وإخباري إذا رأيت أي أخطاء؟ إذا رأيت أخطاءً، الصق الخطأ هنا.

إعجابَين (2)

OK, I have now also finished a backup/restore from a Teams site to self-hosted, with uploads and all plugins in app.yml, and am getting the same 500 error when looking at latest. I am able to access the admin section.

I see an error in the log that looks relevant. It seems to be about s3 but in the admin settings, s3 is clearly disabled on my self-hosted site.

See log:

/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/app/models/upload.rb:186:in `secure_media_url_from_upload_url'
/var/www/discourse/lib/url_helper.rb:60:in `secure_proxy_without_cdn'
/var/www/discourse/lib/url_helper.rb:83:in `cook_url'
/var/www/discourse/app/models/topic_link.rb:274:in `ensure_entry_for'
/var/www/discourse/app/models/topic_link.rb:128:in `block (2 levels) in extract_from'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in `block in within_new_transaction'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in `within_new_transaction'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in `transaction'
/var/www/discourse/app/models/topic_link.rb:126:in `block in extract_from'
/var/www/discourse/app/models/topic_link.rb:124:in `each'
/var/www/discourse/app/models/topic_link.rb:124:in `extract_from'
/var/www/discourse/app/models/post.rb:691:in `rebake!'
/var/www/discourse/app/models/post.rb:645:in `block in rebake_old'
/var/www/discourse/app/models/post.rb:639:in `each'
/var/www/discourse/app/models/post.rb:639:in `rebake_old'
/var/www/discourse/app/jobs/scheduled/periodical_updates.rb:29:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
/var/www/discourse/app/jobs/base.rb:279:in `perform'
mini_scheduler-0.13.0/lib/mini_scheduler/manager.rb:93:in `process_queue'
mini_scheduler-0.13.0/lib/mini_scheduler/manager.rb:37:in `block (2 levels) in initialize'

And also, I attempted a rebake of posts, and saw the same error there. Here’s the full log:

Summary

root@tobiastest-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for ‘default’
97 / 2590 ( 3.7%)
Failed to rebake (topic_id: 6527, post_id: 8052)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in <main>' 148 / 2590 ( 5.7%) Failed to rebake (topic_id: 6527, post_id: 7981) undefined method downcase’ for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name' /var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url’
/var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url' /var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn’
/var/www/discourse/lib/url_helper.rb:83:in cook_url' /var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for’
/var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction' /var/www/discourse/app/models/topic_link.rb:126:in block in extract_from’
/var/www/discourse/app/models/topic_link.rb:124:in each' /var/www/discourse/app/models/topic_link.rb:124:in extract_from’
/var/www/discourse/app/models/post.rb:691:in rebake!' /var/www/discourse/lib/tasks/posts.rake:140:in rebake_post’
/var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts' /var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection’
/var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites' /var/www/discourse/lib/tasks/posts.rake:7:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run’
bin/rake:13:in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>’
/usr/local/bin/bundle:23:in load' /usr/local/bin/bundle:23:in
252 / 2590 ( 9.7%)
Failed to rebake (topic_id: 6527, post_id: 7850)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in <main>' 523 / 2590 ( 20.2%) Failed to rebake (topic_id: 6448, post_id: 7559) undefined method downcase’ for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name' /var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url’
/var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url' /var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn’
/var/www/discourse/lib/url_helper.rb:83:in cook_url' /var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for’
/var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction' /var/www/discourse/app/models/topic_link.rb:126:in block in extract_from’
/var/www/discourse/app/models/topic_link.rb:124:in each' /var/www/discourse/app/models/topic_link.rb:124:in extract_from’
/var/www/discourse/app/models/post.rb:691:in rebake!' /var/www/discourse/lib/tasks/posts.rake:140:in rebake_post’
/var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts' /var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection’
/var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites' /var/www/discourse/lib/tasks/posts.rake:7:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run’
bin/rake:13:in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>’
/usr/local/bin/bundle:23:in load' /usr/local/bin/bundle:23:in
1437 / 2590 ( 55.5%)
Failed to rebake (topic_id: 5684, post_id: 6112)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in `’
2590 / 2590 (100.0%)
2590 posts done!

I had a look on meta for some of these errors and it seems to have come up before, but I did not see any obvious resolutions. I’m sure the solution will be obvious to someone!

3 إعجابات

هل توجد أي حلول أو أفكار حول كيفية معالجة هذا الأمر؟ هل توجد طريقة أخرى للنسخ الاحتياطي والاستعادة يمكن استخدامها؟

:mega: نوجه نداءً إلى مجتمع discourse!

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

مرحبًا يا ياس! هل رأيت هذا الطلب مني في الأعلى؟

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

سيستغرق هذا بعض الوقت لحل المشكلة، آسف! آمل ألا تكون قد تعرضت لإزعاج كبير، ولكنني آمل أيضًا أن تكون عملية التعلم إيجابية أثناء انطلاقتك في رحلة الاستضافة الذاتية. هناك الكثير لتتعلمه في البداية، ولكن بمجرد معرفتك لها ستشعر بالتمكين. :rocket:

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

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

عفوًا، نعتذر عن ذلك.
إليك السجلات:

هل هناك موعد تقريبي لفرق ديسكورد لمراجعة هذه المشكلة وتصحيحها/حلها؟ سيساعد ذلك في اتخاذ قرار بشأن البدائل.

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

رائع! من المفيد معرفة أن المشكلة التي تواجهها هي نفسها التي تمكنت من تكرارها من جانبي. :+1:

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

شكرًا لك على صبرك واستعدادك لأن تكون فأر تجربة خلال هذه العملية!

3 إعجابات

شكرًا لك يا توبياس! نقدر هذه اللفتة! :slight_smile:
ليكن القوة معك!

إعجابَين (2)

@neil وجد الحل. تحري رائع! :male_detective:

من سطر الأوامر:

cd /var/discourse
./launcher enter app
rails c
Upload.update_all(secure: false)

هذا يعيد الموقع إلى العمل بالنسبة لي. @biyaniyash يرجى تجربته وإخبارنا بالنتيجة.

التفسير هو أنه في Discourse for Teams، يتم تمكين Secure Uploads مما يتطلب S3. أما في الموقع المستضاف ذاتيًا الذي تم استعادته مؤخرًا، فإن الوسائط الآمنة معطلة ويتم تخزين الملفات المرفوعة محليًا على الخادم. لكن أي ملفات مرفوعة موجودة من النسخة الاحتياطية كانت مُعلَّمة بالفعل على أنها آمنة، مما أدى إلى ظهور أخطاء.

3 إعجابات

أحاول تجربة هذا. هل أقوم بشيء خاطئ هنا؟

ما الذي يجب أن أكتبه بعد الأمر الأخير الذي قدمته؟

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

لا! أنت لا ترتكب أي خطأ وقد انتهيت. :white_check_mark:

يشير => 270 إلى عدد المنشورات التي تمت معالجتها. يمكنك الآن كتابة exit للخروج من rails، ثم كتابة exit مرة أخرى للخروج من حاوية docker.

الآن انتقل إلى الصفحة الرئيسية للمنتدى وراجع ما تراه، ثم أبلغنا هنا!

إعجابَين (2)

لقد عُدنا للعمل! يهتف! شكرًا لك @neil و @tobiaseigen وجميع الآخرين الذين كانوا جزءًا من نقاشنا الصغير!

إليك ملخص الحل لجميعكم:

  1. تأكد من أن نسخة احتياطية من الفرق تحتوي على SQL وملفات مُحمَّلة.
  2. ابدأ تشغيل الموقع المستضاف ذاتيًا على DigitalOcean باستخدام هذه التعليمات: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub (لاحظ أننا لم نختبره مع droplet واحد من سوق DO Marketplace).
  3. انتقل إلى /admin/site_settings/category/all_results?filter=s3 في موقعك الجديد وقم بتعطيل كل ما يتعلق بـ S3.
  4. حدّث Discourse إلى أحدث إصدار. [مُوصى به: استخدم أمر ./launcher rebuild app].
  5. ثبّت جميع الإضافات (تأكد من التواصل مع فريق Discourse بشأن أحدث الإضافات/تحقق من صفحة إضافات فرقك)
    " يبدو أن هناك سكريبت هجرة للإضافات يتطلب تثبيت إضافات assign و policy و solved على الأقل. إليك القائمة الكاملة للإضافات التي ندرجها حاليًا في Teams — وقد تتغير هذه القائمة في المستقبل. يمكنك ببساطة نسخ هذه القائمة ولصقها في ملف app.yml تحت السطر الذي يشير إلى مدير Docker. تأكد من مطابقة المسافة البادئة تمامًا! جميع هذه الإضافات رسمية وآمنة للتثبيت حتى لو قررت عدم استخدامها. هناك بعض الإضافات الإضافية غير المدرجة هنا توفر شريط جانبي لـ Teams وميزات محددة لاستضافة Teams.
      - git clone https://github.com/discourse/discourse-assign.git
      - git clone https://github.com/discourse/discourse-cakeday.git
      - git clone https://github.com/discourse/discourse-calendar.git
      - git clone https://github.com/discourse/discourse-chat-integration.git
      - git clone https://github.com/discourse/discourse-checklist.git
      - git clone https://github.com/discourse/discourse-code-review.git
      - git clone https://github.com/discourse/discourse-docs.git
      - git clone https://github.com/discourse/discourse-encrypt.git
      - git clone https://github.com/discourse/discourse-footnote.git
      - git clone https://github.com/discourse/discourse-github.git
      - git clone https://github.com/discourse/discourse-graphviz.git
      - git clone https://github.com/discourse/discourse-math.git
      - git clone https://github.com/discourse/discourse-openid-connect.git
      - git clone https://github.com/discourse/discourse-policy.git
      - git clone https://github.com/discourse/discourse-shared-edits.git
      - git clone https://github.com/discourse/discourse-solved.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
  1. استعد النسخة الاحتياطية الخاصة بك.
  2. من سطر الأوامر:
cd /var/discourse
./launcher enter app
rails c
Upload.update_all(secure: false)
  1. وانتهيت! يجب أن يكون كل شيء على ما يرام!
3 إعجابات

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

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

رائع! شكرًا لك على تلخيص الخطوات، ياش! هل تود نشر هذا في موضوع جديد للأشخاص الذين يسعون للانتقال من Teams إلى الاستضافة الذاتية؟ إذا لم تكن ترغب في ذلك، فسأقوم أنا بذلك.

نحن لا ندعم أي طريقة تثبيت إلا التعليمات الرسمية الموجودة في discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. والسبب في ذلك هو أننا لا نستطيع التأكد من عمل الطرق الأخرى، كما أن استكشاف الأخطاء وإصلاحها يصبح صعبًا للغاية أو حتى مستحيلًا.

لا ينبغي أن تكون هذه الخطوة مطلوبة في المستقبل، بمجرد دمج الإصلاح الذي قام به @neil. قد يستغرق ذلك بضعة أسابيع.

في الواقع، هذه الوظيفة ليست معطلة وتعمل كما هو مصمم. وكما هو موضح في الصفحة، تحتاج إلى طلب نسخ احتياطية كاملة منا. نحن لا نروج لهذه الصفحة على Discourse لـ Teams لأن العملاء ليس لديهم حاجة للاحتفاظ بنسخ احتياطية خاصة بهم - حيث يتم الاحتفاظ بها تلقائيًا كل 12 ساعة لجميع عملاء الاستضافة ويتم تخزينها خارج الموقع. وفي حال إلغاء استضافتك، فإننا نوفر لك نسخة احتياطية كاملة تتضمن ملفات التحميل يمكنك تنزيلها لتمكينك من الإعداد في مكان آخر وفقًا لاحتياجاتك.

إعجابَين (2)

مرحبًا توبياس،

شكرًا لك على التوضيح!

لا أزال أتعرّف على هذا المجتمع. هل يجب أن أنشر هذا في قسم الاستضافة؟ يبدو أنني لا أستطيع النشر في فئة “كيفية”. أفترض أنها تُدار كمصدر رسمي يشبه الويكي. إذا كان ذلك أسهل، يمكنك أنت النشر.

فقط رأيي بخصوص النسخ الاحتياطية.

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

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

إعجابَين (2)

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

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

5 إعجابات