DigneZzZ
(Aleksei K)
7 يوليو 2025، 6:17م
1
أهلاً بالجميع،
أواجه مشكلة غريبة مع تخزين Discourse + S3.
عند تحميل الصور الرمزية، أحصل على خطأ مثل الذي أدناه - على الرغم من أن الملف موجود في حاوية S3 ويمكن الوصول إليه عبر s3_cdn_url صالح.
عمليات تحميل المشاركات والمرفقات تعمل بشكل مثالي. الشيء الوحيد الذي يفشل هو تحميل الصور الرمزية للمستخدمين .
رسالة الخطأ من gig.ovh/logs
الرسالة (تم الإبلاغ عن نسختين)
تعذر العثور على الملف في المتجر الموجود على العنوان: //gig.s3.ru-1.storage.selcloud.ru/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
تتبع المكدس
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active\ _support/broadcast\ _logger.rb:134:in `block in error'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active\ _support/broadcast\ _logger.rb:134:in `error'
/var/www/discourse/app/models/optimized_image.rb:91:in `block in create\ _for'
/var/www/discourse/app/models/optimized\ _image.rb:19:in `block (2 levels) in lock'
/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/app/models/optimized_image.rb:19:in `block in lock'
/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/app/models/optimized\ _image.rb:18:in `lock'
/var/www/discourse/app/models/optimized_image.rb:83:in `create\ _for'
/var/www/discourse/app/models/upload.rb:151:in `get_optimized_image'
/var/www/discourse/app/controllers/user_avatars_controller.rb:219:in `get\ _optimized_image'
/var/www/discourse/app/controllers/user\ _avatars_controller.rb:137:in `show_in_site'
/var/www/discourse/app/controllers/user_avatars_controller.rb:90:in `block (2 levels) in show'
/var/www/discourse/lib/hijack.rb:68:in `instance_eval'
/var/www/discourse/lib/hijack.rb:68:in `block (2 levels) in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/lib/hijack.rb:68:in `block in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:911:in `callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:797:in `call\ _callback'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:803:in `call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:692:in `resolve\ _with'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1325:in `resolve'
/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do\ _work'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails\ _multisite-6.1.0/lib/rails\ _multisite/connection\ _management/null\ _instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with\ _connection'
/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start\ _thread'
هذا عنوان URL لـ S3 للحاوية
//gig.s3.ru-1.storage.selcloud.ru/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
الصورة متاحة على العنوان:
https://s3.gig.ovh/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
معلومات إضافية
إصدار Discourse: (أحدث إصدار مستقر)
تم استخدام تخزين خارجي متوافق مع S3 (enable_s3_uploads = true)
s3_cdn_url تم تكوينه واستخدامه بشكل صحيح
عنوان URL لشبكة توصيل المحتوى (CDN) يعيد الملف بنجاح
تم التأكد من وجود الملف في موقع S3 المتوقع
عمليات التحميل الأخرى (الصور، المرفقات، إلخ) تعمل بشكل جيد
الخطأ يحدث فقط مع الصور الرمزية للمستخدمين
سؤال
ما الذي يمكن أن يتسبب في فشل Discourse في استرداد الملف لمعالجة الصورة الرمزية بينما الملف نفسه موجود ويمكن الوصول إليه عبر عنوان URL الصحيح لشبكة توصيل المحتوى (CDN)؟
هل هناك شيء خاص بمعالجة الصور الرمزية (مثل get_optimized_image) يمكن أن يكون خاطئ التكوين أو مخزنًا مؤقتًا بشكل غير صحيح؟
أي اقتراحات أو رؤى ستكون موضع تقدير!
شكرًا
إعجاب واحد (1)
Michaël
(Michaël Joseph)
9 أكتوبر 2025، 9:38ص
2
DigneZzZ:
مرحباً بالجميع،
أواجه مشكلة غريبة مع Discourse + تخزين S3.
عند تحميل الصور الرمزية، أحصل على خطأ مثل الذي أدناه - على الرغم من أن الملف موجود في حاوية S3 ويمكن الوصول إليه عبر s3_cdn_url صالح.
عمليات تحميل المشاركات والمرفقات تعمل بشكل مثالي. الشيء الوحيد الذي يفشل هو تحميل الصور الرمزية للمستخدمين .
رسالة الخطأ من gig.ovh/logs
Message (2 copies reported)
Could not find file in the store located at url: //gig.s3.ru-1.storage.selcloud.ru/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active\ _support/broadcast\ _logger.rb:134:in `block in error'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active\ _support/broadcast\ _logger.rb:231:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active\ _support/broadcast\ _logger.rb:134:in `error'
/var/www/discourse/app/models/optimized_image.rb:91:in `block in create\ _for'
/var/www/discourse/app/models/optimized\ _image.rb:19:in `block (2 levels) in lock'
/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/app/models/optimized_image.rb:19:in `lock'
/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/app/models/optimized\ _image.rb:18:in `lock'
/var/www/discourse/app/models/optimized_image.rb:83:in `create\ _for'
/var/www/discourse/app/models/upload.rb:151:in `get_optimized_image'
/var/www/discourse/app/controllers/user_avatars_controller.rb:219:in `get\ _optimized_image'
/var/www/discourse/app/controllers/user\ _avatars_controller.rb:137:in `show_in_site'
/var/www/discourse/app/controllers/user_avatars_controller.rb:90:in `block (2 levels) in show'
/var/www/discourse/lib/hijack.rb:68:in `instance_eval'
/var/www/discourse/lib/hijack.rb:68:in `block (2 levels) in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/lib/hijack.rb:68:in `block in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:911:in `callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:797:in `call\ _callback'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:803:in `call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:692:in `resolve\ _with'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1325:in `resolve'
/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do\ _work'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails\ _multisite-6.1.0/lib/rails\ _multisite/connection\ _management/null\ _instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with\ _connection'
/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start\ _thread'
هذا عنوان URL لـ S3 للحاوية
//gig.s3.ru-1.storage.selcloud.ru/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
الصورة متاحة على عنوان URL:
https://s3.gig.ovh/original/1X/fd42dfa3362b66090450f2ae40f0917193fcd355.jpeg
معلومات إضافية
إصدار Discourse: (أحدث إصدار مستقر)
تم استخدام تخزين خارجي متوافق مع S3 (enable_s3_uploads = true)
s3_cdn_url تم تكوينه واستخدامه بشكل صحيح
عنوان URL لشبكة توصيل المحتوى (CDN) يعيد الملف بنجاح
تم التأكد من وجود الملف في موقع S3 المتوقع
عمليات التحميل الأخرى (الصور، المرفقات، إلخ) تعمل بشكل جيد
يحدث الخطأ فقط مع الصور الرمزية للمستخدمين
سؤال
ما الذي يمكن أن يسبب فشل Discourse في استرداد الملف لمعالجة الصورة الرمزية بينما الملف المحدد موجود ويمكن الوصول إليه عبر عنوان URL الصحيح لشبكة توصيل المحتوى (CDN)؟
هل هناك شيء محدد لمعالجة الصور الرمزية (مثل get_optimized_image) يمكن أن يكون خاطئ التكوين أو مخزنًا مؤقتًا بشكل غير صحيح؟
أي اقتراحات أو رؤى ستكون موضع تقدير!
شكراً
مرحباً - هل قمت بحل هذا الأمر على الإطلاق؟
أواجه نفس العرض بالضبط على Discourse + S3 (الصور الرمزية فقط):
Could not find file in the store located at url: //\u003cbucket\u003e.s3.dualstack.\u003cregion\u003e.amazonaws.com/original/1X/\u003chash\u003e.jpeg
بعض التفاصيل حول إعداداتي، في حال كانت تتطابق مع إعداداتك:
enable_s3_uploads = true، الكائنات موجودة في original/* و optimized/* (لا يوجد بادئة uploads/default)
الوصول عبر CloudFront (OAC)، الحاوية نفسها خاصة
الكائن موجود في هذا المفتاح؛ عنوان URL لشبكة توصيل المحتوى (CDN) يعمل
يحدث الخطأ فقط لمعالجة الصور الرمزية
(محتمل) يتم تشفير التحميلات باستخدام SSE-KMS
إذا وجدت السبب الجذري أو حلاً (تغيير السياسة، أذونات KMS، محاذاة مسار الحاوية، إلخ)، هل يمكنك مشاركة ما نجح؟ شكراً!