أربعة أحداثٍ عادية، كلٌّ يُنتج تسليمًا ثانيًا للعمل نفسه. ولا واحد منها عيب، ولذلك يُعاد كل تكاملٍ في النهاية.
الأول: انتهاء مهلةٍ نجح. فتخلّى المستدعي؛ واكتمل الهدف. ولا نظام منهما مخطئ وهما مختلفان، وأيًّا كان ما يحدث تاليًا فهو رمي عملة: إعادةٌ فتكرار، أو تخلٍّ ففقد العمل.
والثاني: إعادة تشغيل. ماتت تشغيلةٌ في المنتصف ونفّذها أحدٌ ثانيةً. ويُلزَم ما ألزمته الأولى مرّتين ما لم يمنع ذلك شيء.
والثالث: إعادة تقديم. أعاد مشغّلٌ معالجة نسخةٍ مُخفِقة من وحدة التحكّم — وذلك يعيد تنفيذ التدفّق من البداية، ومنه الخطوات التي نجحت. درس الوحدة ٨، يصل نسخةً مكرّرة.
والرابع: شريكٌ يعيد الإرسال. فقد وقع لديهم انقطاع، أو لم يتأكّدوا من وصول الملفّ الأول، أو نقر أحدٌ مرّتين. ولا تحكّم لك في هذا البتّة، وذلك ما يجعله أوضح حجّة: فالدفاع يجب أن يكون في تصميمك لأنه لا يمكن أن يكون في تصميمهم.
وأربعتها عملياتٌ عادية لا إخفاقات، وذلك مقصود هذا الدرس. وتكاملٌ آمنٌ فقط حين يعمل كل شيء ليس آمنًا، فهذه الأربعة تقع في مجرى السنة المعتاد.
فسؤال التصميم ليس «أسيُعاد هذا» بل «ماذا يحدث حين يُعاد» — وذلك السؤال يجب أن يُجاب لكل كتابةٍ يجريها تكامل، وقت التصميم، فلا يمكن تركيبه بعد وجود النسخ المكرّرة.
