خطأ 500 لمشاركات الروابط TL0 على انستجرام ويوتيوب

لذا صادفت خطأً غريبًا.

هذا يحدث في بيئة اختبار، تعمل على tests-passed (وقع الخطأ في كل من beta و tests-passed). حاولت إلغاء تثبيت جميع الإضافات ما عدا مدير Docker وإزالة جميع مكونات السمة.

حدث التحديث من Stable إلى Beta، ثم إلى tests-passed. قد يكون أحد المؤشرات أن منشورين قديمين لحساب المستخدم العادي test تم تحديدهما من قِبل النظام بعد التحديث بسبب نشر عدد كبير جدًا من الروابط لنفس النطاقات.

عند محاولة النشر من حساب TL0، يمكنني نشر oneboxes من Twitter و Reddit دون مشاكل. لكن روابط Instagram و YouTube ستؤدي إلى خطأ 500. إذا رفعت مستوى ثقة الحساب إلى TL1، فإن الروابط تُنشر بنجاح (وإذا عدت به إلى TL0، يستمر ظهور خطأ 500).

أيضًا، إذا أضفت YouTube و Instagram إلى allowed_spam_host_domains، فإن خطأ 500 يختفي للمستخدم TL0.

سجل - معلومات:

NoMethodError (undefined method `title' for nil:NilClass)
lib/post_action_creator.rb:264:in `create_message_creator'
lib/post_action_creator.rb:91:in `perform'
lib/post_action_creator.rb:18:in `create'
app/models/user.rb:1073:in `block in flag_linked_posts_as_spam'
app/models/user.rb:1066:in `flag_linked_posts_as_spam'
lib/new_post_manager.rb:284:in `perform_create_post'
lib/new_post_manager.rb:216:in `perform'
app/controllers/posts_controller.rb:180:in `create'
app/controllers/application_controller.rb:357:in `block in with_resolved_locale'
app/controllers/application_controller.rb:357:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:354:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

سجل - تتبع الاستدعاء:

lib/post_action_creator.rb:264:in `create_message_creator'

lib/post_action_creator.rb:91:in `perform'

lib/post_action_creator.rb:18:in `create'

app/models/user.rb:1073:in `block in flag_linked_posts_as_spam'

activerecord (6.0.3.3) lib/active_record/relation/delegation.rb:87:in `each'

activerecord (6.0.3.3) lib/active_record/relation/delegation.rb:87:in `each'

app/models/user.rb:1066:in `flag_linked_posts_as_spam'

lib/new_post_manager.rb:284:in `perform_create_post'

lib/new_post_manager.rb:216:in `perform'

app/controllers/posts_controller.rb:180:in `create'

actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'

app/controllers/application_controller.rb:357:in `block in with_resolved_locale'

i18n (1.8.5) lib/i18n.rb:313:in `with_locale'

app/controllers/application_controller.rb:357:in `with_resolved_locale'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'

activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'

activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'

actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'

actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'

lib/middleware/omniauth_bypass_middleware.rb:68:in `call'

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'

rack (2.2.3) lib/rack/head.rb:12:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:354:in `call'

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'

railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'

railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'

config/initializers/100-quiet_logger.rb:23:in `call'

config/initializers/100-silence_logger.rb:31:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'

lib/middleware/enforce_hostname.rb:22:in `call'

rack (2.2.3) lib/rack/method_override.rb:24:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'

rack (2.2.3) lib/rack/sendfile.rb:110:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiler.rb:246:in `call'

message_bus (3.3.4) lib/message_bus/rack/middleware.rb:61:in `call'

lib/middleware/request_tracker.rb:176:in `call'

railties (6.0.3.3) lib/rails/engine.rb:527:in `call'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'

rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.3) lib/rack/urlmap.rb:58:in `each'

rack (2.2.3) lib/rack/urlmap.rb:58:in `call'

unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'

unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'

unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'

unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'

unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'

vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'

vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

لم أتمكن من إعادة إنتاج هذه المشكلة في أحدث إصدار من ديسكورد.

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

4 إعجابات

شكرًا لك @techAPJ على الرد. أعتقد أن الأمر يتعلق بأن منشورات المستخدمين الجدد التي تحتوي على روابط لنفس النطاق تتجاوز ‘حدّ نطاقات البريد المزعج للمستخدمين الجدد’ وهي غير مدرجة في ‘نطاقات النطاقات المسموح بها للبريد المزعج’.

لا يبدو الأمر محددًا لبعض المضيفين، بل يبدو أنه يحدث فقط إذا تم نشر نفس النطاق عدة مرات من قبل مستخدم بمستوى ثقة 0 (TL0). ولا يبدو الأمر محددًا لبعض النطاقات (مثل Instagram وYouTube).

لقد قمت بالتحديث إلى أحدث إصدار من Discourse (تمت اختبارات 2.6.0beta6) بدون إضافات (إدارة Docker فقط) أو قوالب، وأكدت ما يلي على نسختي التجريبية (مع مستخدم عادي بمستوى ثقة 0):

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

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

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

أخبرني إذا لم تتمكن من إعادة إنتاج المشكلة باستخدام المعلومات أعلاه، وسأعمل على الاختبار في الوضع الآمن.

إعجابَين (2)

عند النظر في الأمر عن كثب… لا يبدو أن هناك خللًا، بل إن النظام يعمل كما هو مُصمم.

لا يُسمح للمستخدم الجديد بنشر عدد كبير جدًا من الروابط لنفس المضيف، وإذا أراد مسؤول تجاوز هذا السلوك، فيمكنه ذلك عن طريق ضبط إعدادات الموقع newuser_spam_host_threshold و allowed_spam_host_domains.

وهذا ما يُعكس أيضًا في رسالة الطاقم التي نرسلها عند حظر المنشور بسبب تكرار الروابط:

إعجابَين (2)

تم إغلاق هذا الموضوع تلقائيًا بعد 23 ساعة. لم يعد مسموحًا بالردود الجديدة.