| Termin | Definicja |
|---|---|
| brak retry logic | Brak retry logic to usterka architektury pozbawionej mechanizmu automatycznego ponawiania nieudanych operacji. Brak ponawiania a przebieg nieudanej operacjiBrak retry logic oznacza, że aplikacja po nieudanej operacji nie podejmuje automatycznej próby wykonania jej ponownie. Wywołanie kończy się błędem już po pierwszym niepowodzeniu, nawet jeśli przyczyną była chwilowa niedostępność usługi, krótkie opóźnienie sieci, przerwane połączenie albo chwilowe przeciążenie. W praktyce mechanizm ponawiania może dotyczyć żądania HTTP, zapytania do usługi lokalnej, odczytu pliku, połączenia z urządzeniem lub wykonania zadania w tle. Nie każda awaria jest jednak przejściowa. Błędne hasło, brak uprawnień, niepoprawny adres zasobu, uszkodzony format danych lub naruszenie reguł walidacji nie zostaną naprawione przez wielokrotne powtarzanie tej samej operacji. Retry logic powinno więc rozróżniać błędy tymczasowe od trwałych. Automatyczne ponawianie operacji zakończonej błędem logicznym może tylko zwiększyć obciążenie systemu i opóźnić pokazanie właściwego komunikatu. Skutki braku retry logic w aplikacjiNajbardziej widocznym skutkiem jest przerwanie przepływu danych po pojedynczym błędzie. Jeżeli program pobiera kilka elementów kolejno i jedno żądanie trafi na chwilową awarię połączenia, cały proces może zostać oznaczony jako nieudany. Użytkownik widzi wtedy komunikat o braku danych, mimo że zasób był dostępny chwilę później. W aplikacji działającej w tle może to oznaczać utratę zadania, pominięcie synchronizacji albo pozostawienie rekordu w stanie pośrednim. Brak ponowienia bywa także przyczyną niespójnego zachowania interfejsu. Operacja może zostać wykonana po stronie serwera, lecz odpowiedź nie dotrze do klienta z powodu zerwania połączenia. Ponowne kliknięcie przycisku może wtedy utworzyć drugi wpis, zlecić drugą płatną czynność albo ponownie wysłać ten sam dokument. Z tego powodu sama obecność retry logic nie wystarcza. Operacje zmieniające stan powinny mieć określoną semantykę powtórzenia, a często także identyfikator żądania pozwalający rozpoznać duplikat. Idempotencja, limit prób i opóźnienie między żądaniamiBezpieczne ponawianie wymaga oceny, czy operacja jest idempotentna, czyli czy wielokrotne wykonanie z tymi samymi danymi prowadzi do takiego samego efektu jak wykonanie jednokrotne. Odczyt zasobu zwykle ma tę właściwość, natomiast utworzenie nowego zasobu, wysłanie wiadomości lub zmiana wartości może jej nie mieć. Dla operacji nieidempotentnych można zastosować klucz idempotencji albo inną metodę korelacji, dzięki której odbiorca odróżni ponowione żądanie od nowej czynności. Retry logic powinna mieć ograniczony budżet prób. Typowym rozwiązaniem jest niewielka liczba ponowień z opóźnieniem zwiększanym po kolejnych niepowodzeniach, czyli exponential backoff. Do opóźnienia dodaje się często losową składową, określaną jako jitter, aby wiele klientów nie ponawiało żądań dokładnie w tym samym momencie. Należy również ustalić maksymalny czas oczekiwania, limit całkowity oraz warunki natychmiastowego zakończenia. Po wyczerpaniu limitu aplikacja powinna zwrócić kontrolowany błąd, zapisać przyczynę i pozostawić zadanie w stanie możliwym do dalszej obsługi. Rozpoznanie problemu podczas pracy na laptopie lub komputerze PCDiagnoza braku retry logic wymaga sprawdzenia, gdzie dokładnie kończy się przepływ danych: przy tworzeniu żądania, na etapie połączenia, po otrzymaniu odpowiedzi czy podczas zapisu wyniku. Pomocne są znaczniki czasu, identyfikatory korelacyjne, kod błędu, liczba wykonanych prób oraz informacja o tym, czy operacja zmieniła stan po stronie odbiorcy. Sam komunikat „operacja nie powiodła się” nie pozwala ustalić, czy problem dotyczy programu, połączenia sieciowego, konfiguracji, uprawnień czy usługi zewnętrznej. Na komputerze użytkownika można sprawdzić, czy błąd występuje przy każdym uruchomieniu, tylko po wybudzeniu systemu, podczas niestabilnego połączenia lub wyłącznie dla określonego typu danych. Warto odróżnić brak mechanizmu ponawiania od błędnej konfiguracji istniejącego mechanizmu, na przykład zerowego limitu prób, zbyt krótkiego limitu czasu albo natychmiastowego przerywania zadania przez obsługę wyjątku. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną diagnostykę i naprawę laptopów, komputerów PC oraz ich oprogramowania, w tym analizę objawów związanych z niepełnym przepływem danych. |