أواجه مهلات متكررة (timeouts) لعمال Pitchfork في مثيل Discourse الخاص بي (2026.10.0-latest).
بعد تحليل سجلات الإنتاج، كانت 12 من أصل 13 تحذيرات المهلة مرتبطة بطلبات صندوق الوارد ActivityPub، وتحديداً أثناء حلّ الممثلين البعيدين (remote actor resolution) للتحقق من التواقيع HTTP.
التتبع الخلفي (backtrace) ذي الصلة:
Pitchfork worker is about to timeout,
dumping backtrace for main thread
excon/socket.rb:368:in 'IO.select'
excon/socket.rb:79:in 'Excon::Socket#readline'
excon.rb:255:in 'Excon.get'
discourse_activity_pub/request.rb:70:in 'Request#perform'
discourse_activity_pub/request.rb:34:in 'Request#get_json_ld'
discourse_activity_pub/json_ld.rb:71:in 'JsonLd.request_object'
discourse_activity_pub/a_p/object.rb:251:in 'AP::Object.resolve'
signature_verification.rb:254:in 'actor_from_key_id'
signature_verification.rb:61:in 'signed_request_actor'
inboxes_controller.rb:31:in 'process_json'
inboxes_controller.rb:10:in 'create'
يبدو أن حلّ الممثلين البعيدين يتم بشكل متزامن أثناء معالجة صندوق الوارد، مما قد يؤدي إلى حجب عمال Pitchfork عندما تستجيب الخوادم البعيدة ببطء.
كما قمت بتفعيل activity_pub_verbose_logging لمدة حوالي 24 ساعة ولاحظت محاولات متكررة لحلّ ممثلين Mastodon محذوفين يعيدون استجابة HTTP 410 Gone، مما أدى إلى ظهور العديد من تحذيرات فشل معالجة أنشطة الحذف (Delete activity).
مثال:
[Discourse Activity Pub] GET request to
https://mastodon.social/ap/users/115676297044305006
failed: {"error":"Gone"}
[Discourse Activity Pub] Failed to resolve actor
[Discourse Activity Pub] Failed to process Delete activity:
Unable to create actor
لم أتحقق مما إذا كانت أنشطة الحذف الفاشلة هذه مرتبطة مباشرة بمهلات العمال.
هل يُعد حلّ الممثلين البعيدين بشكل متزامن أثناء التحقق من توقيع صندوق الوارد سلوكاً متوقعاً؟ هل يمكن تحسين التعامل مع المهلات أو التخزين المؤقت (caching) لمنع حجب عمال الويب؟
يسعدني تقديم سجلات إضافية معقمة (sanitized logs) إذا لزم الأمر.