
# الذرّية والاسترداد

`AtomicFilesystem::write_atomic()` يكتب إلى ملف مؤقت، ويفرّغ محتوياته، ثم يستدعي
fsync لمقبض الملف، ويعيد تسميته ليحل محل المسار الهدف، ويحاول استدعاء fsync
للمجلد الأب. وتزيل عمليات الكتابة الفاشلة ملفها المؤقت الخاص.

تسجّل مثيلات المخزن القابلة للكتابة علامة لكل عملية ضمن
`.storh/writers/` وتزيلها عند الإغلاق النظيف. عند فتح مخزن، يجري التحقق من
العلامات: إذا كانت كل العمليات المالكة للعلامات حية (أو لم توجد علامات)، يكون الفتح بزمن ثابت؛ أما إذا انتهت العملية المالكة لعلامة، فهذا يعني
أن كاتبًا قد تعطل، لذا يمسح الفتح المجموعة بحثًا عن الملفات المؤقتة اليتيمة
ويزيل العلامة القديمة. وتُجري `repair()` المسح دائمًا.

يعزل إصلاح DocStore ملفات السجلات التالفة أو المبتورة في `.storh/corrupt/`، ويعيد بناء الفهارس الثانوية من السجلات الصالحة المتبقية. كما تقارن عملية التحقق في DocStore ملفات الفهارس بفحص كامل للسجلات، للإبلاغ عن إدخالات الفهرس المفقودة أو القديمة قبل اعتبارها سليمة.

تُفرغ المحركات ذات السجل الإلحاقي فقط مقابض ملفات السجل وتنفذ fsync عليها قبل اعتبار الأحداث ملتزمة في الذاكرة. ويظل ضمان بقاء البيانات بعد انقطاع الطاقة معتمداً على التزام نظام الملفات الأساسي وخيارات التحميل بمزامنة الملفات والمجلدات.

يكتب السجل المجزأ كل سطر بالشكل التالي:

```text
<byte-length>\t<xxh32>\t<json>\n
```

تتحقق عمليات القراءة من طول البايتات والمجموع الاختباري. ويفحص الاسترداد كل مقطع ويبتّر الملف عند آخر سطر كامل وصالح، ما يزيل الكتابات اللاحقة غير المكتملة. وتقارن عملية التحقق فهرس الحالة المشتق النشط بإعادة تشغيل مستقلة للمقاطع، للإبلاغ عن الحالة المعدلة خارجياً أو القديمة قبل أن يعيد الإصلاح بناءها.

يفك التحقق من قائمة الانتظار كل حدث دائم، ويقارن حالات الانتظار والمعالجة والإنجاز والحمولة وترتيب المطالبة الحالية بإعادة تشغيل مستقلة للسجل. ويعيد الإصلاح بناء تلك الحالة من `queue.log` ويبتّر الأحداث اللاحقة غير المكتملة. وتحافظ عمليات المطالبة والإكمال على قفل قائمة الانتظار أثناء المزامنة من السجل الدائم، كي لا تطالب عمليات عامل متعددة بالمهمة المعلقة نفسها.

يكتب الضغط ملفات مقاطع `compact-*` جديدة ثم يحدّث البيان. إذا انتهت العملية قبل تبديل البيان، يزيل الفتح مجدداً نواتج الضغط غير المشار إليها ويتابع من البيان القديم. وتُبقي عمليات الضغط المكتملة المقاطع القديمة المختومة عمداً، كي تظل صالحة للقراء الذين يقرؤون منها بالفعل.
