Bosh sahifa Wiki Error recovery

Error recovery

Error recoveryparser, compiler, protokol yoki tizim xato aniqlagandan keyin nazoratli holatga qaytib, foydali ishni davom ettirish yoki xavfsiz to‘xtash strategiyasidir. Compilerda u bitta syntax xatodan keyin boshqa diagnosticlarni topishga yordam beradi; distributed servisda retry, rollback yoki degraded mode ko‘rinishida bo‘lishi mumkin. Recovery xatoni yashirish emas.

Parser recovery

Panic mode parser semicolon, closing brace yoki statement keyword kabi synchronization tokenigacha inputni tashlaydi. U sodda va cheksiz loopga kam moyil, ammo valid kodning katta qismini yo‘qotishi mumkin. Phrase-level recovery token qo‘shish, almashtirish yoki o‘chirish bilan yaqin grammatik holatni topadi.

Error production keng tarqalgan xato shaklini grammar’da ifodalab, maxsus diagnostic beradi. Global correction minimum editlar bilan valid token ketma-ketligini qidiradi, lekin hisoblash narxi yuqori. IDE parser tez va tolerant usulni tanlaydi.

Diagnostic sifati

Recoverydan keyingi xatolar primary xatodan kelgan cascade bo‘lishi mumkin. Compiler error node va unknown type bilan analizni davom ettirib, takroriy xabarlarni bostiradi. Birinchi xato har doim yagona root cause emas, lekin keyingi diagnostic confidence bilan ajratilishi mumkin.

Xabar topilgan token, kutilgan konstruksiya va source spanni ko‘rsatadi. Auto-fix faqat semantika aniq bo‘lsa taklif qilinadi. Yopuvchi qavsni noto‘g‘ri joyga qo‘shish kod ma’nosini o‘zgartirishi mumkin.

Runtime recovery

Exception ma’lum stack chegarasida ushlanib, resource cleanup va xato javobi bajariladi. Barcha exceptionni bo‘sh catch bilan yutish corrupted state’ni davom ettirishi mumkin. Qaysi xato recoverable, qaysisi processni qayta boshlashni talab qilishi aniq bo‘ladi.

Retry faqat transient xato va idempotent operation uchun xavfsiz. Exponential backoff, jitter va maksimum urinish downstream xizmatni bosib ketishni cheklaydi. Permanent validation xatosini retry qilish foydasiz.

State va transaction

Transaction xatoda atomik rollback bilan qisman yozuvni qaytaradi. External email yoki payment bir xil database transactionga kirmasa saga, compensation yoki outbox kerak. Compensation aynan oldingi holatni tiklamasligi mumkin; masalan yuborilgan xabarni qaytarib bo‘lmaydi.

Checkpoint uzoq jobni boshidan boshlamasdan davom ettiradi. Checkpoint format versioni va input identity bilan bog‘lanadi. Noto‘g‘ri eski checkpoint yangi kodda corrupted natija berishi mumkin.

Degraded mode

Cache yoki secondary feature ishlamasa servis asosiy funksiyani cheklangan rejimda davom ettirishi mumkin. Degraded holat foydalanuvchi va monitoringga ko‘rinadi; silent stale data berilmaydi. Fail-open va fail-closed tanlovi security hamda availability ta’siriga bog‘liq.

Recovery yo‘li oddiy happy pathdan kam ishlatilgani uchun fault injection va chaos test bilan tekshiriladi. Metrikalar recovery soni, muvaffaqiyati, data loss va tiklanish vaqtini o‘lchaydi. Doimiy recovery asl xatoni tuzatish o‘rnini bosmaydi.

Recovery xavfsizligi

Xatodan keyingi state invariantga mos bo‘lmasa davom etish data corruptionni kengaytiradi. Process supervisor sog‘lom checkpointdan yangi process boshlashi, zararlangan worker esa trafikdan chiqarilishi mumkin. Restart loop backoff va maksimum chegaraga ega.

Recovery credential yoki temporary file qoldirmasligi kerak. Cleanupning o‘zi xato bersa original error yo‘qolmaydi; ikkala holat logda bog‘lanadi. Userga operation status noaniq bo‘lsa “yana yuboring” deyish duplicate side effect keltirishi mumkin. Status query va idempotency key ayni transaction natijasini aniqlashga yordam beradi. Manual runbook automated recovery ishlamagan holatni qamrab oladi.

Bog‘liq tushunchalar

Exception handling, Parser error recovery, Retry, Rollback, Fault tolerance, Degraded mode, Transaction