الخلاصة
- أنهت Cloudflare الحادثة
238b69fw6l55عند 07:12:40 بالتوقيت العالمي في 4 أغسطس، بعدما كشف تشغيل Workers كائناً عاماً غير مقصود باسمTemporal. - كانت
Temporal.Nowتعيد 1 يناير 1970، بينما بقيتDateوDate.now()صحيحتين. - كان بإمكان Worker يثبت polyfill فقط عند غياب التنفيذ الأصلي أن يتوقف عن تثبيته، ثم يحسب الرموز ومدة الصلاحية والتواريخ على أساس 1970 من دون خطأ ظاهر.
- منعت الحادثة المنفصلة
qtn3z0pny08nنشر Workers وWorkers for Platforms عند الجمع بينnodejs_compatوتاريخ توافق في 4 أغسطس 2026 أو بعده. - نصحت Cloudflare مؤقتاً بإزالة
nodejs_compatلتجنب الرفض، ثم أعلنت حل حادثة النشر عند 03:03:00 بالتوقيت العالمي. - لم تفصح الشركة عن السبب التقني أو حجم التأثر أو ضرر العملاء أو ضوابط المنع اللاحقة، ولم تربط الحادثتين سببياً.
الخلل الأول أعاد توزيع القرار داخل التطبيق
قبل ظهور الكائن العام، كان التطبيق يستطيع أن يقرر تحميل polyfill لأنه لا يرى تنفيذاً أصلياً. بعد الظهور، تغيّرت نتيجة اختبار القدرة: بدا أن المنصة توفر Temporal، مع أن الساعة الموجودة داخله لم تكن صالحة.
هذا التحول مهم لأن الخطأ لم يكن توقفاً صريحاً. قالت Cloudflare إن التنفيذ قد يستمر من دون إطلاق خطأ. يصبح الرمز صائب البنية لكنه صادر عند الزمن صفر، أو منتهي الصلاحية في 1970. وقد تبدو قيمة TTL أو عملية حساب التاريخ رقماً عادياً قبل أن تصل إلى نظام آخر.
الحدود ضيقة: لم تتأثر Date وDate.now()، وليس كل Worker يستخدم Temporal أو يثبت polyfill بالطريقة الشرطية. لا يجوز تحويل الآلية المحتملة إلى ادعاء بانقطاع زمني شامل.
زمن المسؤولية أقدم من زمن صفحة الحالة
بدأت الحادثة العامة عند 15:13:33 بالتوقيت العالمي في 3 أغسطس وانتهت بعد 57,547.538 ثانية. لكن Cloudflare قالت إن الكائن كان مكشوفاً منذ 30 يوليو. لذلك يبدأ تدقيق العميل من التاريخ الأقدم، لا من لحظة فتح الحالة.
ينبغي البحث عن النسخ التي كانت تعمل، والمسارات التي تجاوزت polyfill، والرموز والجلسات وبيانات التخزين المؤقت والحسابات التي تحمل زمناً مستحيلاً. إصلاح المنصة لا يلغي تلقائياً أثراً خرج منها قبل الإصلاح.
كما أن تصنيف الأثر بأنه «طفيف» هو وصف Cloudflare للحادثة. من دون أعداد للـWorkers أو الطلبات أو العملاء، لا يقيس ذلك تكلفة التعافي لدى مؤسسة بعينها.
الحادثة الثانية منعت الانتقال إلى التشغيل
في مسار النشر، رفضت assertion إعداداً محدداً قبل أن يبدأ الكود. شمل النطاق المعلن Workers وWorkers for Platforms مع nodejs_compat وتاريخ توافق يبدأ من 4 أغسطس.
قالت Cloudflare إنها تعمل على تخفيف assertion، وقدمت إزالة العلم طريقاً لتجنب الخطأ. لكن الإزالة ليست بديلاً مضموناً. إذا اعتمد التطبيق على واجهات أو سلوك Node.js الذي يفعله العلم، فقد يتحول فشل نشر ظاهر إلى فرق تشغيل أقل وضوحاً.
استمرت الحالة 4,000.289 ثانية. لم تنشر الشركة عدد الإصدارات المرفوضة، أو المناطق، أو نوافذ التغيير التي فاتت، أو نتائج استخدام المسار المؤقت.
سلطة التراجع تحتاج إلى معرفة مسبقة
لا يستطيع فريق اتخاذ قرار سليم بشأن إزالة nodejs_compat ما لم يعرف تحديداً ما الذي يعتمد عليه. يجب أن يرتبط كل علم باختبارات وبواجهات مطلوبة، وأن يبقى تاريخ توافق أخير تم التحقق منه وإعداد رجوع قابل للنشر.
هذه السجلات تمنح الفريق خيارات: انتظار إصلاح المنصة، أو الرجوع إلى تاريخ معروف، أو استخدام مسار بديل سبق اختباره. وهي لا تنقل مسؤولية assertion الخاطئة من Cloudflare إلى العميل؛ بل تمنع أن يكون التعافي مجرد تخمين.
في الحادثة الزمنية، سلطة التراجع مختلفة. يحتاج العميل إلى إيقاف المخرجات غير المعقولة وربما تدوير الرموز أو إعادة الحساب. أما المنصة فتحتاج إلى سحب القدرة غير المقصودة أو تصحيح معناها.
لكل حد اختبار مختلف
اختبار توافر HTTP قد يظل ناجحاً بينما تعيد Temporal زمناً خاطئاً. وفي المقابل، لا يكتشف اختبار التشغيل إعداداً مستقبلياً سترفضه بوابة النشر قبل وصوله إلى runtime.
يتحقق canary الأول من المعنى: وقت ضمن نطاق معقول، إصدار قبل الانتهاء، وTTL موجب. ويتحقق الثاني مسبقاً من إمكان نشر تاريخ التوافق القادم مع الأعلام نفسها ومسار المنتج نفسه.
على Cloudflare أيضاً اختبار المعنيين: وجود الكائن لا يكفي من دون فحص دلالته، وصحة كل علم منفرداً لا تكفي من دون مصفوفة التاريخ والأعلام. هكذا تتحول الوعود إلى ضوابط قابلة للرصد.
التقارب الزمني لا يثبت سبباً مشتركاً
تخص الحادثتان Workers وتغييرات المنصة، وأغلقتا في اليوم نفسه. ذلك مبرر لمراجعة مشتركة لسياسة الإصدارات، لكنه ليس دليلاً على إصدار واحد أو عيب واحد أو فريق واحد.
تحتاج الحادثة الأولى إلى تفسير لكيفية كشف قدرة غير مقصودة وبدء الساعة خطأ ومرور ذلك من اختبار الدلالة. وتحتاج الثانية إلى تفسير لرفض تركيبة التاريخ والعلم وفشل اختبار المصفوفة.
إذا كشفت Cloudflare لاحقاً صلة تقنية، يمكن تحديث التقييم. حتى ذلك الحين، يحافظ الفصل على المسؤولية ويمنع اختراع يقين لا توفره المصادر.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات

