All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
הבאג: start.sh הריץ את uvicorn ברקע, בדק פעם אחת אחרי 2 שניות, ואם הוא מת רק הדפיס שגיאה והמשיך. Next.js רץ ב-foreground אז הקונטיינר נשאר "חי" עם backend מת — Docker/Coolify לא מפעילים restart, ו-/api/health מחזיר 503. זה בדיוק מה שקרה אחרי עדכון הקרנל + reboot ב-2026-06-10: uvicorn לא הצליח להגיע ל-Postgres בשניות הראשונות וה-backend נשאר מת עד restart ידני. התיקון: start.sh הוא כעת סופרוייזר אמיתי — כל תהליך (uvicorn ו-node) רץ בלולאת respawn עם capped backoff (1→2→…→30s, מתאפס אחרי 30s up). race מול Postgres ב-boot נפתר מעצמו. trap על TERM/INT מבצע shutdown נקי (PID 1 sh מתעלם מ-SIGTERM בלי trap → redeploy מהיר יותר). אם סופרוייזר מת באופן בלתי-צפוי — exit 1 כדי ש-Docker יפעיל restart מלא. Invariants: X3 (integration/deploy), X16 (pipeline-durability — עמידות הרצה). לא נוגע ב-G1/G2 (אין מסלול מקביל), לא בולע שגיאות (כל restart מתועד ל-stdout). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
Executable File
1.9 KiB
Executable File