Kody odpowiedzi stanu

W odpowiedziach gRPC mogą być zwracane poniższe kody stanu. Dotyczy to wszystkich wersji gRPC opisanych na tej stronie.

Kod Stan Uwagi
0 OK Wróć: Success
1 CANCELLED Operacja została anulowana, zwykle przez element wywołujący.
2 UNKNOWN Ten błąd może zostać zwrócony, na przykład gdy wartość Stan otrzymana z innej przestrzeni adresowej należy do przestrzeni błędów, która nie jest znana w tej przestrzeni adresowej. Także błędy zgłaszane przez interfejsy API, które nie zwracają wystarczającej ilości informacji o błędzie, mogą być konwertowane na ten błąd.
3 INVALID_ARGUMENT Klient podał nieprawidłowy argument.
4 DEADLINE_EXCEEDED Termin minął przed ukończeniem operacji. W przypadku operacji, które zmieniają stan systemu, ten błąd może zostać zwrócony nawet wówczas, gdy operacja zakończyła się pomyślnie. Może to być na przykład pomyślna odpowiedź z serwera, która była opóźniona na tyle długo, że termin upłynął.
5 NOT_FOUND Nie znaleziono żądanego elementu.
6 ALREADY_EXISTS Encja, którą klient próbował utworzyć, już istnieje.
7 PERMISSION_DENIED Element wywołujący nie ma uprawnień do wykonania określonej operacji. Nie używaj właściwości PERMISSION_DENIED do odrzuceń spowodowanych wyczerpaniem się niektórych zasobów. W przypadku tych błędów użyj pola RESOURCE_EXHAUSTED. Nie używaj ustawienia PERMISSION_DENIED, jeśli nie można zidentyfikować rozmówcy (w przypadku tych błędów użyj elementu UNAUTHENTICATED). Otrzymanie kodu błędu PERMISSION_DENIED nie oznacza, że żądanie jest prawidłowe, żądana jednostka istnieje lub spełnia inne warunki wstępne.
8 RESOURCE_EXHAUSTED Część zasobów została wyczerpana – na przykład limit na użytkownika lub w całym systemie plików nie ma już miejsca.
9 FAILED_PRECONDITION Operacja została odrzucona, ponieważ system nie znajduje się w stanie wymaganym do jej wykonania. Na przykład katalog do usunięcia nie jest pusty lub operacja rmdir jest stosowana do katalogu innego niż katalog.
10 ABORTED Operacja została przerwana, zwykle z powodu problemu równoczesności, takiego jak błąd kontroli sekwencera lub przerwanie transakcji.
11 OUT_OF_RANGE Podjęto próbę wykonania operacji poza prawidłowym zakresem.
12 UNIMPLEMENTED Operacja nie jest wdrożona lub nie jest obsługiwana/włączona w tej usłudze.
13 INTERNAL Błędy wewnętrzne. Oznacza to, że niektóre niezmienniki oczekiwane przez system bazowy zostały uszkodzone. Ten kod błędu jest zarezerwowany dla poważnych błędów.
14 UNAVAILABLE Usługa jest obecnie niedostępna. Jest to najprawdopodobniej stan przejściowy, który można skorygować, jeśli ponownie spróbujesz z opóźnieniem.
15 DATA_LOSS Nieodwracalna utrata danych lub ich uszkodzenie.
16 UNAUTHENTICATED Żądanie nie ma prawidłowych danych uwierzytelniających tej operacji.

Czasami może pojawić się kilka kodów błędu. Usługi powinny zwracać najdokładniejszy kod błędu, który występuje. Możesz na przykład wybrać kod OUT_OF_RANGE zamiast FAILED_PRECONDITION, jeśli mają zastosowanie oba kody. Podobnie preferuj NOT_FOUND lub ALREADY_EXISTS zamiast FAILED_PRECONDITION.

FAILED_PREPOLICY vs. ABORTED (niedostępny)

To jest test lakmusowy, który pomoże Ci wybrać wartości: FAILED_PRECONDITION, ABORTED i UNAVAILABLE:

  • Użyj metody UNAVAILABLE, jeśli klient może ponawiać próbę tylko nieudanego połączenia.
  • Użyj ABORTED, jeśli klient powinien ponawiać próbę na wyższym poziomie, na przykład wtedy, gdy określony przez klienta test i zestaw zakończy się niepowodzeniem, co oznacza, że klient powinien ponownie uruchomić sekwencję odczytu, modyfikacji i zapisu.
  • Użyj FAILED_PRECONDITION, jeśli klient nie powinien ponawiać próby, dopóki stan systemu nie zostanie bezpośrednio poprawiony. Jeśli np. błąd „rmdir” występuje, ponieważ katalog nie jest pusty, najlepiej zwrócić kod FAILED_PRECONDITION, bo klient nie powinien próbować ponownie, chyba że pliki zostaną usunięte z katalogu.

FAILED_ATTRIBUTE – FAILED_PRECondition w porównaniu z OUT_OF_RANGE

To jest test lakmusowy, który pomoże Ci wybrać wartości: INVALID_ARGUMENT, FAILED_PRECONDITION i OUT_OF_RANGE:

  • Użyj INVALID_ARGUMENT, jeśli argumenty powodują problemy niezależnie od stanu systemu. Przykład: nieprawidłowy format adresu URL
  • Użyj OUT_OF_RANGE, jeśli wartość jest poza zakresem ze względu na stan systemu. np. data_początkowa przypada przed start_date_restrict.
  • Użyj FAILED_PRECONDITION, jeśli wartość jest nieprawidłowa ze względu na stan systemu, ale nie jest wartością OUT_OF_RANGE.