Bosh sahifa Wiki Temporary resource

Temporary resource

Temporary resource — dastur yoki test bajarilishi davomida qisqa muddatga yaratiladigan va ish tugagach bo‘shatilishi kerak bo‘lgan resurs. Vaqtinchalik fayl, katalog, port, database sxemasi, cloud instance, lock va xotira bu turga kiradi. “Vaqtinchalik” atamasi resursning avtomatik yo‘qolishini emas, uning lifecycle’i cheklanganini anglatadi.

Lifecycle

Resurs bilan ishlash odatda acquire–use–release ketma-ketligiga ega. Acquire bosqichida noyob nom yoki handle olinadi; use bosqichida resurs amaliy vazifani bajaradi; release bosqichida u yopiladi, o‘chiriladi yoki poolga qaytariladi. Xato yuz bersa ham release bajarilishi kerak.

Ko‘p tillarda bu tartib maxsus konstruksiya bilan ifodalanadi. Python’dagi context manager misoli:

from tempfile import TemporaryDirectory

with TemporaryDirectory() as path:
    build_project(path)
# blokdan chiqishda katalog tozalanadi

finally, RAII, defer, try-with-resources va disposable obyektlar bir xil lifecycle muammosini turli usulda hal qiladi.

Fayl va kataloglar

Temporary faylni oddiy taxmin qilinadigan nom bilan yaratish xavfli. Boshqa jarayon shu nomni oldindan band qilishi yoki symbolic link orqali yozishni boshqa manzilga yo‘naltirishi mumkin. Operatsion tizimning atomik temporary-file API’si tasodifiy, faqat joriy foydalanuvchiga ochiq fayl yaratadi va handle qaytaradi.

Temporary katalogning joyi ham muhim. Katta build artefakti kichik tizim partitionini to‘ldirishi mumkin; maxfiy ma’lumot umumiy katalogda noto‘g‘ri permission bilan qolmasligi kerak. Fayl nomini keyin ochish o‘rniga yaratilgan file descriptor’dan foydalanish time-of-check/time-of-use poygasini kamaytiradi.

Test infratuzilmasi

Integration testlar container, message queue, database yoki alohida tenant yaratishi mumkin. Har testga izolyatsiyalangan resurs berilishi parallel bajarilishdagi to‘qnashuvni oldini oladi. Resurs nomida run identifikatori bo‘lishi cleanup va auditni osonlashtiradi.

Test jarayoni majburan to‘xtasa odatiy teardown ishlamasligi mumkin. Shu sababli tashqi resurslarga TTL, owner yorlig‘i va keyingi garbage-collector jarayoni qo‘shiladi. Masalan, cloud resurs expires_at tegiga qarab o‘chiriladi. TTL faol ishni muddatidan oldin to‘xtatmasligi uchun yangilanish mexanizmi ham kerak bo‘lishi mumkin.

Resurs turlari va bo‘shatish

Resurs Release amali
Fayl handle Yopish
Temporary fayl Yopish va o‘chirish
TCP port/socket Socketni yopish
Lock Unlock qilish
Database transaction Commit yoki rollback
Cloud instance Delete yoki terminate

Memory garbage collection obyekt xotirasini qaytarishi mumkin, ammo ochiq fayl, lock yoki tashqi instance’ni o‘z vaqtida bo‘shatishga kafolat bermaydi. Deterministik cleanup shuning uchun alohida yoziladi.

Xatolik va idempotent cleanup

Cleanup qisman yaratilgan resursni ham taniydi. Masalan, database yaratilib, migration muvaffaqiyatsiz tugasa, tozalash kodi migration tugagan deb faraz qilmasligi kerak. Release amali takror chaqirilganda zarar bermaydigan idempotent shaklda bo‘lsa, retry xavfsizlashadi.

Asosiy operatsiya va cleanup bir vaqtda xato qilishi mumkin. Dastur asosiy xatoni yo‘qotmasdan cleanup xatosini ham log yoki exception chain orqali saqlaydi. Aks holda asl sabab tozalashdagi ikkilamchi xato bilan almashtiriladi.

Kuzatuv va limitlar

Temporary resurslar nazoratsiz qolsa disk to‘lishi, file descriptor tugashi, port bandligi yoki cloud xarajati yuzaga keladi. Metrikalar faol resurslar soni, yoshi va cleanup muvaffaqiyatsizligini ko‘rsatadi. Kvota bir foydalanuvchi yoki test run’ning butun tizim resursini egallashiga to‘sqinlik qiladi.

Logda resurs identifikatori va owner ko‘rsatiladi, lekin fayldagi maxfiy mazmun yozilmaydi. Cleanup siyosati audit talablariga zid ravishda zarur dalillarni o‘chirib yubormasligi uchun temporary artefakt bilan diagnostik artefakt alohida tasniflanadi.

Bog‘liq tushunchalar

Resource management, Cleanup, Teardown, Context manager, RAII, Garbage collection, Time to live