Ugrás a tartalomhoz
← Vissza a Journalhoz
Technológia
7 perc olvasás

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.

Szerző Frihet csapata
Automatizálási hiba: ellenőrzés újrapróbálkozás előtt

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ékMit bizonyít
09:00:00Az 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:02A 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:10Az automatizáló időtúllépést rögzít.Nem kapott visszaigazolást a várakozási időn belül.
09:02:00Egy 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:00A 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öttKö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.

Megosztás

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é.

Frihet — Üzlet dráma nélkül

Indulj Ingyen