| Termin | Definicja |
|---|---|
| zduplikowane dane w odpowiedzi | Zduplikowane dane w odpowiedzi to powtórzone wartości zwracane przez API wskutek błędu zapytania. Zduplikowane dane w odpowiedzi – czym jest ten problemZduplikowane dane w odpowiedzi oznaczają sytuację, w której aplikacja otrzymuje tę samą wartość więcej niż jeden raz, mimo że w żądaniu oczekiwano pojedynczego wyniku albo listy bez powtórzeń. Problem może dotyczyć całych rekordów, pojedynczych pól, identyfikatorów, komunikatów, elementów tablicy lub fragmentów dokumentu zwracanego w formacie JSON czy XML. Na ekranie może być widoczny podwójny produkt, dwa razy ten sam komentarz, powielony wpis w historii albo wielokrotnie wyświetlony komunikat. Nie każde powtórzenie jest błędem. W niektórych zbiorach ta sama wartość może wystąpić zgodnie z założeniami, na przykład gdy kilka osób ma taki sam status, wiele zdarzeń odnosi się do jednego obiektu albo lista zawiera kolejne pomiary o identycznym wyniku. O nieprawidłowości można mówić dopiero wtedy, gdy powielone elementy nie wynikają z modelu danych, a ich obecność zmienia sens odpowiedzi, zaburza sortowanie, zwiększa liczbę wyników lub powoduje błędne działanie interfejsu. Źródło problemu może znajdować się w zapytaniu, sposobie łączenia danych, paginacji, obsłudze ponawiania żądania albo w warstwie, która przekształca wynik przed przekazaniem go do użytkownika. Dlatego sama obserwacja powtórzonej wartości nie wystarcza do wskazania przyczyny. Potrzebne jest prześledzenie całej drogi danych: od parametrów żądania, przez odpowiedź źródłową, aż po sposób jej wyświetlenia lub zapisania. Zduplikowane dane w odpowiedzi a kontekst techniczny i porównaniaPowielony wynik może powstać na kilku różnych poziomach. Najprostszy przypadek to błędne zapytanie, które zwraca ten sam rekord wielokrotnie. Dzieje się tak między innymi wtedy, gdy połączenie dwóch zbiorów nie wykorzystuje unikalnego klucza albo warunek łączenia jest zbyt szeroki. Jeden element z pierwszego zbioru może wówczas zostać dopasowany do kilku elementów drugiego zbioru, a wynik końcowy będzie zawierał pozornie identyczne wiersze. Inny przypadek dotyczy samego zapytania do interfejsu programistycznego. Jeżeli filtr nie jest przekazywany, jest ignorowany albo ma niewłaściwy typ, odpowiedź może zawierać więcej danych niż oczekiwano. Podobny efekt pojawia się przy niejednoznacznym sortowaniu. Gdy kolejne strony wyników są pobierane na podstawie pola, które nie jest unikalne, granica między stronami może przesunąć się w sposób powodujący ponowne pobranie tego samego elementu. Warto odróżnić zduplikowane dane w odpowiedzi od wielokrotnego wyświetlenia prawidłowej odpowiedzi. Jeżeli narzędzie diagnostyczne pokazuje jeden rekord, a aplikacja prezentuje go dwa razy, przyczyny należy szukać w kodzie interfejsu, pamięci podręcznej lub mechanizmie aktualizacji widoku. Jeżeli powtórzenia są widoczne już w surowej odpowiedzi, problem powstaje wcześniej, na etapie budowania zapytania, przetwarzania źródła albo łączenia kilku wyników. Ważne jest także rozróżnienie duplikatu całego obiektu od powtórzenia wartości w jego polu. Dwa obiekty mogą mieć ten sam identyfikator, lecz różnić się datą lub statusem. Z kolei jeden obiekt może zawierać dwa takie same elementy w tablicy, mimo że pozostałe pola są prawidłowe. W pierwszym przypadku zagrożona jest spójność kluczy, a w drugim sposób tworzenia listy. Takie rozróżnienie pomaga dobrać właściwą metodę sprawdzania i zapobiegania powtórzeniom. Zduplikowane dane w odpowiedzi – typowe problemy i objawyNajczęstszym objawem jest zawyżona liczba elementów. Aplikacja może informować o większej liczbie wyników, niż faktycznie istnieje, albo stronicowanie może tworzyć dodatkowe strony zawierające te same rekordy. W zestawieniach prowadzi to do błędnych sum, podwójnego naliczenia zdarzeń i rozbieżności między widokiem użytkownika a danymi źródłowymi. Przy eksporcie problem może zostać utrwalony w pliku, a późniejsze filtrowanie nie zawsze usunie skutki wcześniejszego powielenia. Powtórzenia często pojawiają się po odświeżeniu widoku, ponownym kliknięciu przycisku, wznowieniu połączenia lub automatycznym ponowieniu żądania. Jeżeli operacja po stronie odbierającej dane nie jest odporna na ponowne wykonanie, ten sam pakiet może zostać dopisany zamiast rozpoznany jako już obsłużony. W takim przypadku trzeba sprawdzić identyfikator żądania, identyfikator elementu oraz sposób przechowywania ostatnio przetworzonych wyników. Problematyczne bywają również filtry wielowartościowe. Przekazanie kilku warunków w niewłaściwej strukturze może sprawić, że jeden rekord zostanie dopasowany osobno do każdego warunku. Podobny skutek daje nieprawidłowe grupowanie warunków logicznych, zwłaszcza gdy część filtrów powinna działać łącznie, a część alternatywnie. Zamiast zakładać, że źródło danych jest uszkodzone, należy odtworzyć dokładne żądanie i porównać je z oczekiwanym znaczeniem biznesowym. Duplikaty mogą też być wynikiem niespójnych identyfikatorów. Jeżeli raz używany jest numer rekordu, a innym razem identyfikator obiektu powiązanego, mechanizm usuwania powtórzeń może uznawać te same dane za różne. Przy analizie warto sprawdzić, które pole powinno jednoznacznie identyfikować element, czy zachowuje stały typ oraz czy nie jest puste. Szczególną uwagę należy zwrócić na konwersję tekstu na liczbę, wielkość liter, spacje oraz różnice w zapisie dat. Zduplikowane dane w odpowiedzi – praktyczne wskazówki diagnostyczneDiagnostykę najlepiej rozpocząć od zapisania dokładnego żądania i surowej odpowiedzi. Należy uwzględnić metodę, adres zasobu, parametry, nagłówki istotne dla filtrowania oraz numer strony, jeśli odpowiedź jest dzielona na części. Następnie można porównać liczbę wszystkich elementów z liczbą unikalnych identyfikatorów. Taki prosty test pozwala ustalić, czy powtórzenia dotyczą całych obiektów, czy tylko wybranych pól. Przydatne jest sprawdzenie tego samego żądania dla małego, jednoznacznego zakresu danych. Jeżeli duplikaty znikają po zawężeniu filtra, prawdopodobną przyczyną jest łączenie, sortowanie albo paginacja. Jeżeli występują również w najmniejszym zakresie, należy zweryfikować reguły tworzenia odpowiedzi i źródłowe rekordy. Każdy test powinien być wykonywany na tych samych parametrach, ponieważ zmiana kolejności sortowania albo czasu pobrania może zmienić wynik. W kodzie odbierającym dane można zastosować kontrolę unikalności opartą na stabilnym identyfikatorze, ale nie powinna ona zastępować naprawy źródła problemu. Automatyczne usuwanie powtórzeń jest bezpieczne tylko wtedy, gdy wiadomo, że dwa identyczne identyfikatory zawsze oznaczają ten sam obiekt. W przeciwnym razie można nieświadomie utracić prawidłowe zdarzenia. Warto także zachować informację diagnostyczną o liczbie odrzuconych elementów, aby powielanie nie zostało ukryte. Należy zweryfikować działanie pamięci podręcznej, mechanizmów ponawiania i obsługi opóźnionych odpowiedzi. Dwa żądania wykonane prawie jednocześnie mogą zakończyć się w innej kolejności, a ich wyniki mogą zostać dopisane do tej samej listy. Pomocne bywa nadanie każdemu żądaniu własnego identyfikatora, logowanie czasu rozpoczęcia i zakończenia oraz rejestrowanie identyfikatorów elementów. Dzięki temu można odróżnić powtórzenie pochodzące ze źródła od powtórzenia wprowadzonego podczas składania widoku. Zduplikowane dane w odpowiedzi – kiedy zgłosić się do serwisuDo serwisu warto zgłosić problem, gdy powtórzenia pojawiają się nie tylko w jednym widoku, lecz także w kilku programach, po różnych sposobach odświeżenia albo przy korzystaniu z tego samego komputera przez różnych użytkowników. Szczególnie istotne są sytuacje, w których dane są zapisywane podwójnie, aplikacja przestaje odpowiadać, urządzenie działa niestabilnie albo problem występuje po aktualizacji systemu, sterownika lub oprogramowania odpowiedzialnego za komunikację. Przed zgłoszeniem dobrze przygotować opis kroków prowadzących do błędu, przykładową odpowiedź z usuniętymi danymi poufnymi, nazwę używanego programu oraz informację, czy powtórzenie występuje stale, czy tylko w określonych warunkach. Przydatne mogą być również zrzuty ekranu i godzina wystąpienia problemu. Nie należy przesyłać haseł, kluczy dostępu ani pełnych danych osobowych. Sam komunikat o powielonych danych nie przesądza jeszcze, czy przyczyna leży w sprzęcie, konfiguracji, aplikacji czy sposobie komunikacji, dlatego znaczenie ma zebranie objawów z kilku miejsc. W Warszawie takie przypadki można skonsultować z firmą Warszawskie Pogotowie Komputerowe 24/7, gdy potrzebne jest sprawdzenie komputera, jego konfiguracji oraz programów uczestniczących w przetwarzaniu odpowiedzi. Podczas analizy można ustalić, czy duplikaty są generowane przez źródło danych, połączenie, pamięć urządzenia czy warstwę prezentacji, a następnie uporządkować diagnostykę tak, aby nie usuwać prawidłowych informacji razem z błędnymi powtórzeniami. |