Automatizálási hiba: ellenőrzés újrapróbálkozás előtt
Az időtúllépés nem bizonyítja, hogy a művelet meghiúsult. Idővonal és incidenslap segít ellenőrizni az eredményt, mielőtt újra próbálkozna.
TL;DR: Mielőtt újrapróbálkozna egy automatizálással, ellenőrizze, hogy a művelet megtörtént-e már a célhelyen. Egy időtúllépés csupán azt jelzi, hogy nem érkezett időben válasz. Őrizze meg a művelet azonosítóját, az egyes próbálkozások adatait és a rendelkezésre álló bizonyítékokat. Csak a befejezetlen munkát folytassa, a szolgáltató dokumentált szabályai szerint; a kétértelmű eredményeket hagyja felülvizsgálatra.
Kulcspontok
- Válassza külön a befejezni kívánt műveletet annak minden végrehajtási kísérletétől.
- Egy megerősített bejegyzés a célhelyen többet nyom a latban, mint az automatizáló piros színe.
- Az idempotencia hatókörrel és időtartammal rendelkezik; önmagában nem védi meg a teljes folyamatot.
Tartalomjegyzék
Egy automatizálás hibát jelez, és valaki azt javasolja, hogy nyomja meg az „Újrapróbálkozás” gombot. Előtte érdemes egy konkrétabb kérdésre válaszolni: mi hiányzik még? Hiányozhat maga a művelet, annak megerősítése vagy egy későbbi lépés. A teljes folyamat megismétlése ezen helyzetek egyikére alkalmas, de a többit ronthatja.
Egy alapító vagy egy kis csapat számára a vizsgálatnak folytatódnia kell, még akkor is, ha az integrációt beállító személy nincs jelen. Ez az útmutató egy idővonalat és egy adatlapot biztosít a megerősített és az ismeretlen dolgok megkülönböztetésére. A példa fikció: nem ír le Frihet incidenst, és nem használ valós szolgáltatásokat, ügyfeleket vagy hitelesítő adatokat.
A képernyő hibája és a munka állapota
Az időtúllépés azt jelzi, hogy egy várakozás időben történő válasz nélkül ért véget. Önmagában nem teszi lehetővé, hogy megtudjuk, a célhely elmentett-e valamit. Az AWS elmagyarázza ezt a problémát egy olyan kéréssel, amely létrehozhatott volna egy erőforrást, még akkor is, ha a kérelmező nem kapott visszaigazolást. Ennek a bizonytalanságnak a feloldásához azonosítani kell a hatást és annak forrását.
Három állapotban dolgozzon: megerősített hatás, a hatás igazolt hiánya és ismeretlen. A „Nem jelenik meg a képernyőmön” a harmadik kategóriába tartozik, amíg szűrők, más fiók, késve frissülő index vagy még aktív végrehajtás lehetséges. Jegyezze fel azt is, hogy ki és mikor ellenőrizte az állapotot: egy megfigyelésnek van kontextusa, nem örökérvényű.
Egy idővonal, amely megváltoztatja a döntést
Tegyük fel, hogy van egy folyamat, amely egy belső feladatot hoz létre, majd annak hivatkozását egy nyomon követési lapon rögzíti. Minden, ami következik, hipotetikus. Az idők ugyanazt a szimulált órát használják; egy valós vizsgálat során őrizze meg az időzónát és az egyes jelölések forrását.
| Idő | Fiktív bizonyíték | Mit bizonyít |
|---|---|---|
09:00:00 | Az ATT-DEMO-A kísérlet elküldi az OP-DEMO-X műveletet. | Megpróbáltak létrehozni egy feladatot; az eredményt még nem bizonyítja. |
09:00:02 | A célhely naplója elmenti a TASK-DEMO-T feladatot, amely az OP-DEMO-X-hez tartozik. | A feladat létrejött ehhez a művelethez. |
09:00:10 | Az automatizáló időtúllépést rögzít. | Nem kapott visszaigazolást a várakozási időn belül. |
09:02:00 | Egy engedélyezett olvasás lekéri a TASK-DEMO-T feladatot és annak eredeti hivatkozását. | A hatás továbbra is fennáll, és megfelel a kérésnek. |
09:03:00 | A lap nem tartalmazza a hivatkozást; a végrehajtási naplója azt jelzi, hogy ez a lépés nem kezdődött el. | A nyomon követés hiányzik, nem a feladat létrehozása. |
A következő lépés a nyomon követés dokumentált eljárás szerinti helyreállítása. A „feladat létrehozása” ponttól való újraindítás ismét megérintene valamit, ami már megoldott. Ha az utolsó sor csak annyit mondana, hogy „nem látom a lapon”, akkor is ki kell zárnunk egy késést, egy szűrőt vagy egy aktív folyamatot, mielőtt oda írnánk.
A műveleti hivatkozás stabil marad; a kísérlet azonosítója minden végrehajtással változik. Egy fogadott esemény és egy létrehozott feladat szintén különálló azonosítóval rendelkezik. Őrizze meg a kapcsolataikat, hogy ne tévesszen össze két kísérletet ugyanazon munkára két különálló, érvényes feladattal.
Őrizzen meg egy adatlapot, amelyet más is folytathat
Kezdje azzal, hogy megőrzi a meglévő naplókat, és megakadályozza az új írási műveleteket a folyamathoz tervezett szüneteltetési mechanizmussal. Egy szünet nem vonja vissza a már végrehajtottakat, és nem garantálja a már folyamatban lévő kérések leállítását. Ellenőrizze a várólistát és a függőben lévő újrapróbálkozásokat, mielőtt feltételezné, hogy senki más nem fog cselekedni.
Másolja ezt az adatlapot egy belső, megfelelő hozzáféréssel rendelkező nyilvántartásba. Használjon hivatkozásokat a bizonyítékokra, elkerülve a titkok vagy személyes adatok megosztott dokumentumokba való beillesztését. Minden javítást dátummal kell hozzáadni, a korábbi megfigyelés törlése nélkül.
Incidens: [belső hivatkozás]Kívánt művelet: [egyetlen konkrét eredmény]Szolgáltató / fiók / környezet: [a célhely kontextusa]Művelet / esemény / kísérletek: [azonosítók és kapcsolatok]Folyamat verziója: [végrehajtott verzió]Utolsó megerősített lépés: [bizonyíték és időbélyeg időzónával]Hatás állapota: [igazolt hatás / igazolt hiány / ismeretlen]Célhely bizonyítéka: [hivatkozás, lekérdezés és láthatósági korlátok]Még aktív munka: [függőben lévő kérések, várólista és újrapróbálkozások]Újrapróbálkozási szerződés: [dokumentáció, hatókör és időablak]Hiányzó adat: [döntéshez szükséges bizonyíték]Következő lépés: [lekérdezés vagy korlátozott helyreállítás]Felelős / következő felülvizsgálat: [személy és dátum]Későbbi eredmény: [új bizonyíték, a korábbi felülírása nélkül]Az „igazolt hiány” erősebb bizonyítékot igényel, mint egy üres keresés: például egy előzetes, végrehajtás előtti elutasítás, amelyet a célhely dokumentált, az összes többi kísérlet kizárásával. Ha nem tudja igazolni ezt az állapotot, tartsa fenn az „ismeretlen” állapotot.
Az idempotenciakulcs korlátai
Ellenőrizze a szolgáltató szerződését az adott kérésre, fiókra és környezetre vonatkozóan. Egy írási műveletet védő kulcs nem védi automatikusan a későbbi értesítést vagy más szolgáltatást. Nem is adható hozzá visszamenőlegesen egy már kulcs nélkül elküldött kéréshez. Az adatlapnak a vonatkozó dokumentációra kell hivatkoznia, nem csak annyit kell mondania, hogy „van idempotenciánk”.
A Stripe idempotens kérései — API v1 újra felhasználják az első végrehajtás elmentett eredményét, beleértve az 500-as hibákat is. A Stripe összehasonlítja a paramétereket, és legalább 24 óra elteltével törölheti a kulcsokat; egy törölt kulcs újrahasználata újabb kérést indít. Hibaleírásuk figyelmeztet az 500-as hiba utáni lehetséges hatásokra: a kulcs megváltoztatása vagy a lejáratra való várakozás nem bizonyítja, hogy biztonságos egy bizonytalan művelet megismétlése.
Az előző határidő a Stripe-ra vonatkozik. Más célhely esetén jegyezze fel annak saját időablakát, azt az azonosítót, amelyet ismétlődőnek tekint, és a párhuzamos kérések kezelését. Ha egy helyreállítás paraméterek megváltoztatását igényli, azt új döntésnek tekintse, az előző hatások felülvizsgálatával.
Döntés a bizonyítékok alapján, lépésről lépésre
A következő táblázat egy javasolt működési kritérium, nem egy univerzális szolgáltatói politika. Válassza külön a vizsgálatot az adatok módosítására vonatkozó engedélytől.
| Amit ellenőrzött | Következő döntés |
|---|---|
| A helyes hatás már létezik, és ehhez a művelethez tartozik. | Őrizze meg a hivatkozását; csak a függőben lévő lépéseket állítsa helyre, amelyek biztonságos eljárással rendelkeznek. |
| Van bizonyíték arra, hogy nem történt meg, aktív kísérletek nélkül. | Érvényesítse újra, hogy a munka továbbra is szükséges, és alkalmazza a szolgáltató által engedélyezett újrapróbálkozást. |
| Továbbra is ismeretlen, de létezik egy dokumentált mechanizmus ugyanannak a kérésnek a helyreállítására. | Ellenőrizze az eredeti kulcsot, a paramétereket, a hatókört és az érvényességet, mielőtt a meglévő engedély keretein belül használná. |
| Továbbra is ismeretlen, és hiányzik valamilyen feltétel. | Tartsa fenn a szünetet, és rendelje hozzá a függőben lévő lekérdezést; ne hozzon létre másik műveletet a hiba megoldásához. |
| Vannak duplikátumok vagy inkompatibilis hatások. | Őrizze meg a bizonyítékokat, és készítsen egy felülvizsgálható korrekciót; ne törölje a bejegyzéseket intuíció alapján. |
A visszafordíthatatlan vagy nagy hatású írási műveletekhez a javasolt helyreállítás emberi felülvizsgálata szükséges. Sem egy kulcs, sem egy zöld gomb nem nyújt „pontosan egyszeri” garanciát a teljes útvonalra.
Ellenőrizze azt is, ki fogja újrapróbálni
Előfordulhat, hogy az automatizáló, az API-kliens és a szolgáltató is rendelkezik saját újrapróbálkozásokkal. A Stripe webhookjai esetében a manuális újraküldés nem törli az automatikus újrapróbálkozásokat; ezenkívül az események ismétlődhetnek és sorrenden kívül érkezhetnek. Egy esemény újraküldése sem egyenértékű egy API írási művelet idempotens ismétlésével: ezek különböző mechanizmusok.
Mielőtt bezárná az adatlapot, ellenőrizze a célhely aktuális állapotát, a függőben lévő lépéseket és a később érkező kísérleteket. Határozza meg, ki fogja megfigyelni a következő végrehajtást. Az adatlap bezárása nem egyenlő a munka megoldásával: ha ismeretlen eredmény marad, tartsa nyitva az incidenst felelőssel és felülvizsgálati dátummal.
Ezután felülvizsgálhatja, hogy a folyamat érdemes-e továbbra is automatizálva maradni a a felesleges feladatok elhagyása, automatizálás és delegálás (angolul) kritériumai szerint. Ha Frihet-tel kapcsolódik, használja a fejlesztői dokumentációt és az integrációs katalógust a megfelelő interfész megtalálásához. Őrizze meg ezt az adatlapot a folyamat mellett: a következő személynek képesnek kell lennie megtalálni az utolsó ellenőrzött állapotot anélkül, hogy egy csevegésből újra kellene építenie.
Műszaki források 2026. szeptember 14-én ellenőrizve. Az adatlapok, döntések és DEMO hivatkozások saját didaktikai javaslatok; nem utasítások valós szolgáltatásban történő változtatások végrehajtására.
Hasznos volt ez a cikk?
Gyakran ismételt kérdések
Egy időtúllépés azt jelenti, hogy az automatizálás nem csinált semmit?
Nem. Azt jelenti, hogy aki a válaszra várt, abbahagyta a várakozást. A célhely befejezhette, tovább dolgozhat, vagy egyáltalán nem kapta meg a kérést. Ellenőrizze az eredményt referenciák és a célhely naplóbejegyzései alapján, mielőtt egy írási műveletet megismételné.
Létrehozhatok egy másik idempotencia-kulcsot az újrapróbálkozás feloldásához?
Egy új kulcs azonosíthat egy másik műveletet, és lehetővé tehet egy második hatást. Őrizze meg az eredeti kulcsot, ha a dokumentált szerződés lehetővé teszi ugyanannak a kérésnek az újrapróbálkozását; ha a paraméterek megváltoznak, vagy a védelem lejárt, vizsgálja meg a helyzetet, mielőtt folytatná.
Mit tegyek, ha nem tudom bizonyítani, hogy a művelet megtörtént-e?
Tartsa meg az ismeretlen állapotot, jegyezze fel, milyen bizonyíték hiányzik, és rendeljen hozzá egy felülvizsgálatot dátummal. Visszafordíthatatlan vagy nagy hatású írási műveletek esetén a felelős személynek kell döntenie a helyreállításról; ne alakítsa a válasz hiányát az ismétlés engedélyévé.