فشل دمج المستخدم، إدخالات قاعدة بيانات تالفة بسبب إضافة طرف ثالث

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

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-bbb.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-canned-replies.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-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-policy.git
          - git clone https://github.com/discourse/discourse-prometheus.git
          - git clone https://github.com/discourse/discourse-prometheus-alert-receiver.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/davidtaylorhq/discourse-whos-online.git

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

قد يكون الأمر متعلقًا بإضافة discourse-assign، حيث يبدو أنها الإضافة الوحيدة في قائمتك التي تعدّل فئة TopicQuery. وأعتقد أن الخطأ يحدث هناك.

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

./launcher enter app
rails c

id_of_problematic_topic = 123
Topic.find(id_of_problematic_topic).custom_fields

بعد تعطيل discourse-assign:

  • يعمل الوضع الأحدث بنجاح
  • يفشل الوضع الأقدم
  • /t/951 لا يزال يفشل

جاري تشغيل الاستعلام… آه! لقد نجحت تمامًا!

 {"event_start"=>1601748000, "event_end"=>1601749800, "event_all_day"=>false, "event_timezone"=>"Etc/UTC", "event_rsvp"=>true, "event_going_max"=>100, "event_version"=>1, "event_going"=>[36, 50]}

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

شكرًا لك على حل هذه المشكلة @gerhard!

يمكنك تحديث الحقل المخصص لتلك الموضوع وإزالة المعرف غير الموجود. قد يرغب @angus في إضافة دعم لدمج المستخدمين إلى إضافته.

للتوثيق:

tcf = TopicCustomField.where(topic_id: problematic_topic_id)
c = tcf.last # في حالتي، قد يختلف الأمر
c.value = "[295,50]"
c.save

لأغراض الأرشيف، في حال كان الموضوع يحتوي على حقول مخصصة متعددة، فيجب استخدام:

tcf = TopicCustomField.where(plugin_name: 'discourse-events', topic_id: problematic_topic_id)
c = tcf.first
c.value = "[295,50]"
c.save

@hellekin أنصحك بالانتقال إلى Creating and managing events.

في الواقع، ربما يمكنك العمل مع @fzngagan على سكريبت هجرة من Events إلى Discourse Events؟ سيكون من الجيد وجود حالة حقيقية للعمل عليها هناك. فايز، يجب أن نضع هذا في الأولوية، وأود إلغاء دعم Events رسميًا.

@angus، @fzngagan: هل تعتقد أنه يمكنني تغيير سطر الإضافة في تكوين الحاوية، وإعادة البناء، ثم التعامل مع تشغيل السكربت؟ بما أنني بحاجة أيضًا إلى تغيير مستودعات Git لـ “من هو من” و"المحترفين"، يمكنني القيام بذلك دفعة واحدة. من ناحية أخرى، نحن في منتصف الهاكاثون، وإذا تم حل المشكلة، يمكنني الانتظار لمدة أسبوع.

@hellekin
لقد قمت مؤخرًا بإصلاح مشكلة مشابهة حيث كان حذف مستخدم يسبب مشاكل.

أعجبني جدًا فكرة الانتقال إلى Creating and managing events. والسؤال إذن هو: هل ترغب في الاحتفاظ بالأحداث المنتهية الصلاحية، وكم عدد الأحداث القادمة التي لديك؟

@fzngagan @hellekin يمكنك نقل المحادثة إلى هنا لتفصيل الأمور: Pavilion

سأطرح نفسي للعمل على سكريبت الهجرة.

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

سأشارك في النقاش الذي أشرت إليه أدناه.

عظيم أن نرى هذا التعاون الرائع. أنا أحب Discourse من أجل ذلك! شكرًا للجميع على كل جهودكم ومشاركتكم :heart:

نعم، نود الاحتفاظ بالفعاليات السابقة لأنها مرتبطة بالمواضيع، خاصة الحالية منها المتعلقة بمؤتمر ActivityPub 2020 (الذي لا يزال جاريًا) — هذا الأسبوع هو أسبوع الهاكاثون.
بغض النظر عن هذه الفعاليات، لا نملك العديد من الفعاليات الأخرى، لكننا سنقرأ عن عملية الهجرة — ربما الأسبوع المقبل لأن هذا الأسبوع مشغول بالفعل بالكامل. تحياتي! وما قاله @aschrijver: مجتمع Discourse رائع!