Code

I codici di errore canonici per le API gRPC.

A volte potrebbero essere applicati più codici di errore. I servizi devono restituire il codice di errore più specifico applicabile. Ad esempio, preferisci OUT_OF_RANGE rispetto a FAILED_PRECONDITION se sono applicabili entrambi i codici. Analogamente, preferisci NOT_FOUND o ALREADY_EXISTS rispetto a FAILED_PRECONDITION.

Enum
OK

Non è un errore; una volta ottenuta l'esito positivo.

Mappatura HTTP: 200 OK

CANCELLED

L'operazione è stata annullata, generalmente dal chiamante.

Mappatura HTTP: richiesta chiusa client 499

UNKNOWN

Errore sconosciuto. Ad esempio, questo errore può essere restituito quando un valore Status ricevuto da un altro spazio di indirizzi appartiene a uno spazio di errore ignoto. Potrebbero essere convertiti in questo errore anche gli errori generati dalle API che non restituiscono informazioni sufficienti sull'errore.

Mappatura HTTP: errore interno del server 500

INVALID_ARGUMENT

Il client ha specificato un argomento non valido. Tieni presente che questo valore è diverso da FAILED_PRECONDITION. INVALID_ARGUMENT indica argomenti problematici indipendentemente dallo stato del sistema (ad esempio, un nome di file non corretto).

Mappatura HTTP: richiesta 400 non valida

DEADLINE_EXCEEDED

La scadenza è scaduta prima del completamento dell'operazione. Per le operazioni che modificano lo stato del sistema, questo errore potrebbe essere restituito anche se l'operazione è stata completata correttamente. Ad esempio, una risposta corretta da un server potrebbe essere ritardata abbastanza a lungo prima della scadenza.

Mappatura HTTP: timeout del gateway 504

NOT_FOUND

Alcune entità richieste (ad es. file o directory) non sono state trovate.

Nota per gli sviluppatori server: se una richiesta viene rifiutata per un'intera classe di utenti, ad esempio l'implementazione graduale delle funzionalità o una lista consentita non documentata, è possibile utilizzare NOT_FOUND. Se una richiesta viene rifiutata per alcuni utenti all'interno di una classe di utenti, ad esempio il controllo dell'accesso basato sugli utenti, è necessario utilizzare PERMISSION_DENIED.

Mappatura HTTP: errore 404 non trovato

ALREADY_EXISTS

L'entità che un client ha tentato di creare (ad esempio, file o directory) esiste già.

Mappatura HTTP: conflitto 409

PERMISSION_DENIED

Il chiamante non dispone dell'autorizzazione per eseguire l'operazione specificata. Non è consentito utilizzare PERMISSION_DENIED per i rifiuti causati dall'esaurimento di alcune risorse (utilizza invece RESOURCE_EXHAUSTED per questi errori). PERMISSION_DENIED non deve essere utilizzato se il chiamante non può essere identificato (utilizza UNAUTHENTICATED per questi errori). Questo codice di errore non implica che la richiesta sia valida o che l'entità richiesta esista o soddisfi altre precondizioni.

Mappatura HTTP: 403 accesso negato

UNAUTHENTICATED

La richiesta non ha credenziali di autenticazione valide per l'operazione.

Mappatura HTTP: 401 Autorizzazione non autorizzata

RESOURCE_EXHAUSTED

Alcune risorse sono esaurite, forse una quota per utente o l'intero file system è esaurito.

Mappatura HTTP: 429 troppe richieste

FAILED_PRECONDITION

L'operazione è stata rifiutata perché il sistema non è nello stato richiesto per l'esecuzione dell'operazione. Ad esempio, la directory da eliminare non è vuota, un'operazione rmdir viene applicata a una non directory e così via.

Gli implementatori di servizi possono utilizzare le seguenti linee guida per decidere tra FAILED_PRECONDITION, ABORTED e UNAVAILABLE: (a) Utilizza UNAVAILABLE se il client può riprovare solo la chiamata non riuscita. (b) Utilizza ABORTED se il cliente deve riprovare a un livello superiore. Ad esempio, quando un test-and-set specificato dal client ha esito negativo, ciò indica che il client deve riavviare una sequenza di lettura, modifica e scrittura. (c) Utilizza FAILED_PRECONDITION se il client non deve riprovare finché lo stato del sistema non è stato corretto in modo esplicito. Ad esempio, se una riga "rmdir" non riesce perché la directory non è vuota, dovrebbe essere restituito FAILED_PRECONDITION poiché il client non deve riprovare a meno che i file non vengano eliminati dalla directory.

Mappatura HTTP: richiesta 400 non valida

ABORTED

L'operazione è stata interrotta, in genere a causa di un problema di contemporaneità come un errore del controllo del sequencer o dell'interruzione di una transazione.

Consulta le linee guida precedenti per decidere tra FAILED_PRECONDITION, ABORTED e UNAVAILABLE.

Mappatura HTTP: conflitto 409

OUT_OF_RANGE

Il tentativo dell'operazione è stato effettuato una volta superato l'intervallo valido. ad esempio cercare o leggere oltre la fine del file.

A differenza di INVALID_ARGUMENT, questo errore indica un problema che può essere risolto se lo stato del sistema cambia. Ad esempio, un file system a 32 bit genererà INVALID_ARGUMENT se viene richiesto di leggere con un offset che non è compreso nell'intervallo [0,2^32-1], ma genererà OUT_OF_RANGE se viene richiesto di leggere da un offset superiore alla dimensione corrente del file.

Esiste una discreta sovrapposizione tra FAILED_PRECONDITION e OUT_OF_RANGE. Ti consigliamo di utilizzare OUT_OF_RANGE (l'errore più specifico) quando si applica, in modo che i chiamanti che stanno ripetendo l'operazione in uno spazio possano facilmente cercare un errore OUT_OF_RANGE per rilevare al termine dell'operazione.

Mappatura HTTP: richiesta non valida 400

UNIMPLEMENTED

L'operazione non è implementata o non è supportata/abilitata in questo servizio.

Mappatura HTTP: errore 501 non implementato

INTERNAL

Errori interni. Ciò significa che alcune caratteristiche invarianti previste dal sistema sottostante sono state interrotte. Questo codice di errore è riservato agli errori gravi.

Mappatura HTTP: errore interno del server 500

UNAVAILABLE

Il servizio non è al momento disponibile. Molto probabilmente si tratta di una condizione temporanea, che può essere corretta riprovando con un backoff. Tieni presente che non è sempre sicuro ritentare le operazioni non idempotenti.

Leggi le linee guida precedenti per decidere tra FAILED_PRECONDITION, ABORTED e UNAVAILABLE.

Mappatura HTTP: servizio 503 non disponibile

DATA_LOSS

Perdita o danneggiamento di dati non recuperabili.

Mappatura HTTP: errore interno del server 500