fix(halacha): נעילה גלובלית — חילוץ אחד בכל רגע (מונע הקפאת מכונה) #30
Reference in New Issue
Block a user
Delete Branch "fix/halacha-extract-global-lock"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
הבעיה (2026-05-31 — הקפאת מכונה + reboot קשה)
חילוץ הלכות עבר ל-opus-4-8 @ xhigh (PR #26 — כבד CPU/RAM). כש-CMPA-71 רץ, ה-fallback של הסוכן השיק מספר driver-תהליכים חופפים (כל retry =
python -cנפרד;process_pendingטורי בתוך תהליך אך המכונה הריצה 4-5 drivers במקביל) → 12-16 תהליכיclaude -pxhigh בו-זמנית → load 69 → המכונה נתקעה, נדרש reboot קשה.התיקון
halacha_extractor.extract()לוקח כעת PostgreSQL advisory lock (pg_try_advisory_lock, מפתח'HALA') לפני כל עבודה. אם חילוץ אחר (כל תהליך/סוכן/driver — כולם חולקים את ה-DB) מחזיק את הנעילה → מחזירstatus='busy'והתקדים נשאר pending ל-drain הבא. מבטיח חילוץ אחד בלבד בכל רגע — חוצה-תהליכים (semaphore בתוך-תהליך לא רואה drivers נפרדים)._extract_impl(ללא שינוי) תחת הנעילה.CHUNK_CONCURRENCYכעת מתכוונן ב-env (HALACHA_CHUNK_CONCURRENCY, ברירת-מחדל 3).אימות
תחת נעילה מוחזקת,
extract()החזירbusyבלי שום קריאת-LLM ובלי לגעת בנתונים; הנעילה משתחררת תקין והחילוץ הבא ממשיך. עוקב #72.🤖 Generated with Claude Code