aggregate_claims_to_arguments עם force=True אינו נעול — שתי ריצות חופפות מייצרות טיעונים כפולים #461
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
What & Why
argument_aggregator.aggregate_claims_to_arguments(case_id, force=True)עושהDELETE FROM legal_arguments WHERE case_id=$1ואז מוסיף מחדש — בלי נעילה על התיק. שתי ריצות חופפות משתלבות: השנייה מוחקת אחרי שהראשונה כבר הכניסה חלק, או ששתיהן מוסיפות אותה קבוצה.שחזור (2026-08-05, תיק 1069-04-26)
הריצה דיווחה
total: 141:אבל ב-DB היו 154 שורות. חותמות-הזמן מראות שתי קבוצות נכתבו פעמיים:
permit_applicant·כתב עררrespondent·כתב עררהצבירה נמשכת ~45 דקות (כמה קריאות מודל), כך שחלון החפיפה רחב מאוד — כל wakeup של סוכן או לחיצה ב-UI בתוך פרק הזמן הזה מספיקים.
למה זה מזיק:
legal_argumentsמזין את פאנל "טיעונים ועמדות", אתparty_claims_summary, אתprotocol_analyzer(בסיס-ההשוואה לדיון) ואתcase_digest_radar. כפילות שקטה מנפחת את כולם, ו-totalהמדווח לא תואם את מה שנמצא בפועל — כלומר גם אי אפשר לזהות זאת מהפלט.קרוב-משפחה של #444 (ריצת-heartbeat כפולה דורסת טיוטה) — אותו שורש: פעולה ארוכה ללא בלעדיות.
Acceptance Criteria
pg_advisory_xact_lockעל ה-case_id, או שורת-נעילה ב-DB).status:"busy"עם הודעה ברורה, לא ממתינה בשקט ולא כותבת חלקית.totalהמוחזר שווה בדיוק ל-COUNT(*)בפועל בתיק בסיום — טסט-רגרסיה שאוכף את זה.force=Trueבמקביל על אותו תיק → אחת מצליחה, השנייהbusy, וב-DB אין כפילויות.