אסטרטגיות לטיפול בשגיאות במשימות
אסטרטגיית הטיפול בשגיאות של משימה מציינת את הפעולה שיש לבצע אם המשימה נכשלת בגלל שגיאה זמנית.
הגדרת אסטרטגיות לטיפול בשגיאות
כדי להגדיר אסטרטגיה לטיפול בשגיאות במשימה, מבצעים את השלבים הבאים:
- לוחצים על המשימה הקיימת בכלי לעריכת שילובים. מופיעה חלונית הגדרת המשימה.
- בחלונית הגדרת המשימה, מרחיבים את הקטע Error handling (טיפול בשגיאות). בתמונה הבאה מוצג הקטע Error handling (טיפול בשגיאות):
בקטע Error handling (טיפול בשגיאות), פועלים לפי השלבים הבאים:
- כדי להוסיף מדיניות חדשה לטיפול בכשלים, לוחצים על + הוספה של מדיניות לטיפול בכשלים. אם מוגדרות כמה מדיניות מותנית לטיפול בכישלון, המערכת בודקת אותן ומתאימה אותן לפי הסדר.
- בשדה Retry strategy (שיטת ניסיון חוזר), בוחרים את שיטת הטיפול בשגיאות שרוצים להשתמש בה. רשימת האסטרטגיות מופיעה במאמר אסטרטגיות לניסיון חוזר.
- בשדה תנאי לניסיון חוזר, מזינים את התנאי שצריך להתקיים בשגיאה כדי שהאסטרטגיה הזו לטיפול בשגיאות תופעל. לדוגמה, כדי להפעיל את אסטרטגיית השגיאות אם קוד השגיאה תואם ל-
404במשימה של קריאה לנקודת קצה של REST, מזינים את הערך הבא: מידע על הוספת התנאים האלה זמין במאמר בנושא תנאים לניסיון חוזר.$`ErrorInfo.code`$ = 404
- בקטע Default error policy (מדיניות ברירת מחדל לשגיאות), מוסיפים את מדיניות ברירת המחדל שתחול אם לא נמצאה מדיניות התאמה מותנית. מדיניות ברירת המחדל לכישלון היא אופציונלית.
- בקטע Error catcher, מוסיפים את error catcher לשילוב.
- כדי להוסיף מדיניות חדשה לטיפול בכשלים, לוחצים על + הוספה של מדיניות לטיפול בכשלים. אם מוגדרות כמה מדיניות מותנית לטיפול בכישלון, המערכת בודקת אותן ומתאימה אותן לפי הסדר.
מידע על קודי שגיאה וטיפול בשגיאות זמין במאמר טיפול בשגיאות.
אסטרטגיות של ניסיון חוזר
בטבלאות הבאות מתוארות אסטרטגיות שונות לטיפול בשגיאות שאפשר להשתמש בהן במשימה:
| סוג השיטה | תיאור |
|---|---|
| חמורה | הפעולה הזו מפסיקה את הביצוע של השילוב כולו ומסמנת את סטטוס הביצוע כנכשל. |
| התעלמות | המערכת מתעלמת מהכשל של המשימה. השילוב ממשיך להפעיל את המשימות הבאות, בהנחה שהמשימה שנכשלה הצליחה. |
| ללא | הביצוע של המשימה מופסק והסטטוס של השילוב מסומן כנכשל. אם קיים נתיב חלופי למשימה הסופית (משימת עלה), המשימות בנתיב החלופי יופעלו. אם כל המשימות בנתיב החלופי פועלות בהצלחה, סטטוס השילוב מסומן כהצלחה. |
| הפעלה מחדש של השילוב עם השהיה לפני ניסיון חוזר | מריץ את השילוב כולו מהמשימה הראשונה. עם זאת, יכול להיות שהמשימה תיכשל שוב. כדי למנוע כשל חוזר, מציינים את מרווח הזמן בין ההפעלה מחדש בשדה Retry interval (מרווח בין ניסיונות חוזרים) (בשניות) ואת מספר הניסיונות המותרים להפעלה מחדש בשדה Maximum retry count (מספר הניסיונות המקסימלי). |
| ניסיון חוזר של משימה עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) | מריצים את השילוב מהמשימה שנכשלה. אם המשימה נכשלת במהלך ניסיון חוזר, מרווח הזמן בין כל ניסיון חוזר גדל בחזקת 2. יש עיכוב של שנייה אחת עד 5 שניות שנוסף לזמן ההשהיה לפני ניסיון חוזר (backoff).
לדוגמה, אם מרווח הזמן שצוין לניסיון חוזר הוא 3 שניות, הניסיון החוזר הראשון מתרחש אחרי 3 שניות. הניסיון השני מתרחש אחרי 9 שניות, הניסיון השלישי אחרי 81 שניות וכן הלאה. התהליך נמשך עד שמגיעים למספר המקסימלי של ניסיונות חוזרים או עד שהמשימה מצליחה, המוקדם מביניהם. |
| ניסיון חוזר של המשימה עם מרווח קבוע | מריצים את השילוב מהמשימה שנכשלה. אם המשימה נכשלת במהלך ניסיון חוזר, מרווח הזמן בין כל ניסיון חוזר נשאר קבוע.
לדוגמה, אם מרווח הזמן שצוין לניסיון חוזר הוא 3 שניות, הניסיונות החוזרים יתבצעו כל 3 שניות. התהליך נמשך עד שמגיעים למספר המקסימלי של ניסיונות חוזרים או עד שהמשימה מצליחה, המוקדם מביניהם. |
| ניסיון חוזר של משימה עם השהיה לינארית | מריצים את השילוב מהמשימה שנכשלה. אם המשימה נכשלת במהלך ניסיון חוזר, מרווח הזמן בין כל ניסיון חוזר גדל באופן לינארי. יש עיכוב של שנייה אחת עד 5 שניות שנוסף לזמן ההשהיה לפני ניסיון חוזר (backoff).
לדוגמה, אם מרווח הזמן שצוין לניסיון חוזר הוא 3 שניות, הניסיון החוזר הראשון מתרחש אחרי 3 שניות. הניסיון השני מתרחש אחרי 6 שניות, הניסיון השלישי אחרי 9 שניות וכן הלאה. התהליך נמשך עד שמגיעים למספר המקסימלי של ניסיונות חוזרים או עד שהמשימה מצליחה, המוקדם מביניהם. |
ניסיונות חוזרים עם השהיה לפני ניסיון חוזר
מגבלת ברירת המחדל של הפעלה בו-זמנית מוגדרת ל-50 הרצות לכל פרויקט ואזור. הפעלה שנכשלה מתווספת לתור ומתבצע ניסיון חוזר להפעלה שלה באמצעות אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff). האלגוריתם הזה מגדיל בהדרגה את זמן ההמתנה בין הניסיונות החוזרים עד 10 פעמים. לדוגמה:
- ביצוע שילוב.
- אם הבקשה נכשלת, המערכת ממתינה 10 דקות ומנסה שוב לשלוח את הבקשה.
- אם הבקשה נכשלת, המערכת ממתינה 20 דקות ומנסה שוב לשלוח את הבקשה.
- אם הבקשה נכשלת, המערכת ממתינה 40 דקות ומנסה שוב לשלוח את הבקשה.
- וכך הלאה, עד למקסימום של 10 ניסיונות חוזרים עם השהיה לפני ניסיון חוזר (backoff).
תנאי ניסיון חוזר
תנאי הניסיון החוזר מציין את התנאי שצריך להתקיים כדי שאסטרטגיית הטיפול בשגיאות תופעל. בטבלה הבאה מפורטים האופרטורים והפונקציות הנתמכים שבהם אפשר להשתמש בתנאי הניסיון החוזר:
אופרטורים נתמכים
בטבלה הבאה מפורטים האופרטורים הנתמכים שאפשר להשתמש בהם בתנאים של ניסיון חוזר.
| אופרטור | תיאור | דוגמה |
| = | בודקת אם שני ערכים שווים | $var$ = "value" |
| != | בודקת אם שני ערכים שונים זה מזה | $var$ != "value" |
| < | בודקת אם ערך מסוים קטן מערך אחר | 5 < 10 |
| <= | בודקת אם ערך קטן מערך אחר או שווה לו | $var$ <= 5 |
| > | בודקת אם ערך מסוים גדול מערך אחר | 1 > 0 |
| >= | בודקת אם ערך מסוים גדול מערך אחר או שווה לו | $var$ >= 0 |
| : | הפונקציה בודקת אם מחרוזת מכילה מחרוזת משנה בתוכה, או אם רשימה מכילה ערך פרימיטיבי ספציפי. |
|
| וגם | הפונקציה בודקת שני ביטויים ומחזירה את הערך True אם שני הביטויים מחזירים את הערך True. | $a$ > $b$ AND $b$ < $c$ |
| או | הפונקציה בודקת שני ביטויים ומחזירה את הערך True אם אחד מהביטויים מחזיר את הערך True. | $a$ > $b$ OR $b$ < $c$ |
| NOT | אופרטור שלילה. הופכת את התוצאה של ביטוי. | NOT($var$ = "value") |
פונקציות נתמכות
בטבלה הבאה מתוארות הפונקציות הנתמכות שאפשר להשתמש בהן בתנאי ניסיון חוזר.
| פונקציה | תיאור |
exists(VARIABLE)
|
בדיקה אם משתנה נתון קיים |
does_not_exist(VARIABLE)
|
בדיקה אם משתנה נתון לא קיים |
is_empty(VARIABLE)
|
בודקת אם משתנה נתון הוא רשימה וגם ריק. תומך בסוג משתנה מסוג מערך, למעט מערך JSON. |
is_not_empty(VARIABLE)
|
בודקת אם משתנה נתון הוא רשימה וגם לא ריק. תומך בסוג משתנה מסוג מערך, למעט מערך JSON. |