Omów małe pierwsze zadanie →

Ivan Matiushkin

Ponowienia API i duplikaty rekordów: co sprawdzić przed kolejną próbą

Aktualizacja zamówienia kończy się timeoutem. Ponowienie może przywrócić proces albo utworzyć drugie zamówienie, jeśli cel zaakceptował już pierwsze żądanie. Najpierw trzeba ustalić, co się wydarzyło, zamiast zwiększać liczbę prób.

Niezależna działająca demonstracja na danych syntetycznych. To nie jest wdrożenie klienta.

Timeout pozostawia pytanie bez odpowiedzi

Wywołujący nie otrzymał użytecznej odpowiedzi. Sam ten fakt nie mówi, czy cel zapisał rekord. Zachowaj identyfikator źródłowy, tożsamość żądania, skrót jego treści i historię prób. Jeśli nie da się ustalić wyniku, pozostaw go nierozstrzygniętym i skieruj do wyjaśnienia.

Odróżnij ponowienie od zmienionego żądania

Powtórzenie tej samej operacji powinno zachować jej tożsamość. Ta sama tożsamość z inną treścią wymaga jawnej reguły konfliktu. Mechanizm ponowień jest niepełny, jeśli sprawdza tylko status HTTP i nie rozróżnia tych sytuacji. Dostępne gwarancje zależą od API docelowego.

Sprawdź istniejący syntetyczny pakiet testów API

Otwórz API Tests i uruchom pakiet. IDM-007 sprawdza, czy syntetyczna odpowiedź na duplikat zwraca HTTP 200 i idempotentReplay=true. RTY-012 wstrzykuje odpowiedź 504, a następnie 201 i zachowuje WARNING. To kontrolowane testy endpointów, a nie dowód gwarancji dostarczenia konkretnego dostawcy. Pokazane czasy próbki są ilustracyjne, nie stanowią pomiaru wydajności.

Sprawdź dokładniejszy przykład odzyskiwania

Migration Showcase zachowuje zaakceptowane rekordy celu i ponawia tylko błędne. Usuń SKU-X99: TX-104 i TX-106 pozostają wyjątkami. Przywróć mapowanie i ponów: zapisane zostaną tylko te dwa rekordy. Kolejne ponowienie niczego nie zapisuje. To selektywne odzyskiwanie w kontrolowanym celu, nie gwarancja exactly-once w systemie rozproszonym.

Ustal warunki odbioru

Dla rzeczywistego procesu API sprawdź identyczne ponowienie, ten sam klucz ze zmienioną treścią, timeout przed akceptacją, timeout po akceptacji oraz odzyskanie po restarcie. Ostatnie trzy przypadki wymagają reprezentatywnego środowiska testowego i dowodów z celu. Zapisz identyfikatory źródła i celu, próby oraz końcowy zaobserwowany stan. Sam licznik prób nie potwierdza zapisu.

Małe pierwsze zlecenie

Zacznij od jednej operacji API, jej dokumentacji i przykładów nieudanych żądań oraz odpowiedzi bez danych poufnych. Rezultatem może być powtarzalny pakiet testów, lista potwierdzonych problemów i proponowane reguły odzyskiwania. Implementację oraz uruchomienie produkcyjne uzgadniam z Tobą osobno po poznaniu ograniczeń API.

Migration Showcase →

Powiązane przykłady praktyczne