Codici di risposta stato

I seguenti codici di stato possono essere restituiti nelle risposte gRPC. Questo vale per tutte le versioni di gRPC documentate su questo sito.

Codice Stato Note
0 OK Ritorno il giorno Success
1 CANCELLED L'operazione è stata annullata, in genere dal chiamante.
2 UNKNOWN Ad esempio, questo errore può essere restituito quando un valore di stato ricevuto da un altro spazio di indirizzi appartiene a uno spazio di errore non noto in questo spazio degli indirizzi. Anche gli errori generati dalle API che non restituiscono informazioni sull'errore sufficienti potrebbero essere convertiti in questo errore.
3 INVALID_ARGUMENT Il client ha specificato un argomento non valido.
4 DEADLINE_EXCEEDED Il termine è scaduto prima del completamento dell'operazione. Per le operazioni che cambiano lo stato del sistema, questo errore può essere restituito anche se l'operazione viene completata correttamente. Ad esempio, una risposta riuscita da un server che è stato ritardato abbastanza a lungo da far scadere la scadenza.
5 NOT_FOUND Alcune entità richieste non sono state trovate.
6 ALREADY_EXISTS L'entità che un client ha tentato di creare esiste già.
7 PERMISSION_DENIED Il chiamante non dispone dell'autorizzazione per eseguire l'operazione specificata. Non usare PERMISSION_DENIED per i rifiuti causati dall'esaurimento di alcune risorse; usa RESOURCE_EXHAUSTED invece per questi errori. Non usare PERMISSION_DENIED se non è possibile identificare il chiamante (utilizza invece UNAUTHENTICATED per questi errori). Ricevere un codice di errore PERMISSION_DENIED non implica che la richiesta sia valida o che l'entità richiesta esista o soddisfi altre condizioni preliminari.
8 RESOURCE_EXHAUSTED Alcune risorse sono esaurite, forse una quota per utente o forse l'intero file system ha esaurito lo spazio.
9 FAILED_PRECONDITION L'operazione è stata rifiutata perché il sistema non si trova nello stato richiesto per l'esecuzione. Ad esempio, la directory da eliminare non è vuota oppure viene applicata un'operazione rmdir a una directory non directory.
10 ABORTED L'operazione è stata interrotta, generalmente a causa di un problema di contemporaneità, come un errore del controllo della sequenziatore o l'interruzione della transazione.
11 OUT_OF_RANGE L'operazione è stata tentata oltre l'intervallo valido.
12 UNIMPLEMENTED L'operazione non è implementata o non è supportata/abilitata in questo servizio.
13 INTERNAL Errori interni. Ciò significa che alcune invarianti previste dal sistema sottostante sono state interrotte. Questo codice di errore è riservato a errori gravi.
14 UNAVAILABLE Il servizio non è al momento disponibile. Si tratta molto probabilmente di una condizione temporanea che può essere corretta se si ritenta con un backoff.
15 DATA_LOSS Perdita o danneggiamento di dati non recuperabili.
16 UNAUTHENTICATED La richiesta non dispone di credenziali di autenticazione valide per l'operazione.

A volte potrebbero essere applicati più codici di errore. I servizi dovrebbero restituire il codice di errore più specifico applicabile. Ad esempio, preferisci OUT_OF_RANGE rispetto a FAILED_PRECONDITION se si applicano entrambi i codici. Allo stesso modo, preferisci NOT_FOUND o ALREADY_EXISTS rispetto a FAILED_PRECONDITION.

FAILED_PRECONDIZIONE contro ABORTED e UNAVAILABLE

Di seguito è riportata una cartina di tornasole che può aiutarti a scegliere tra FAILED_PRECONDITION, ABORTED e UNAVAILABLE:

  • Utilizza UNAVAILABLE se il client può riprovare solo la chiamata non riuscita.
  • Utilizza ABORTED se il client deve riprovare a un livello superiore, ad esempio quando un test e un set specificato dal client ha esito negativo, il che indica che il client deve riavviare una sequenza di lettura, modifica e scrittura.
  • Utilizza FAILED_PRECONDITION se il client non deve riprovare finché lo stato del sistema non viene risolto esplicitamente. Ad esempio, se un comando "rmdir" non riesce perché la directory non è vuota, è meglio restituire FAILED_PRECONDITION perché il client non dovrebbe riprovare a meno che i file non vengano eliminati dalla directory.

INVALID_ARGUMENT e FAILED_PRECONDIZIONE rispetto a OUT_OF_RANGE

Di seguito è riportata una cartina di tornasole che può aiutarti a scegliere tra INVALID_ARGUMENT, FAILED_PRECONDITION e OUT_OF_RANGE:

  • Utilizza INVALID_ARGUMENT se gli argomenti sono problematici a prescindere dallo stato del sistema. Ad esempio: un URL non corretto
  • Utilizza OUT_OF_RANGE se un valore non rientra nell'intervallo a causa dello stato del sistema. Ad esempio, start_date è precedente al giorno start_date_restrict.
  • Utilizza FAILED_PRECONDITION se il valore non è valido a causa dello stato del sistema, ma non è un valore OUT_OF_RANGE.