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 si applicano entrambi i codici. Allo stesso modo, preferisci NOT_FOUND o ALREADY_EXISTS rispetto a FAILED_PRECONDITION.

Enum
OK

Non è un errore, ma è stato restituito il problema.

Mappatura HTTP: 200 OK

CANCELLED

L'operazione è stata annullata, generalmente dal chiamante.

Mappatura HTTP: richiesta chiusa dal client 499

UNKNOWN

Errore sconosciuto. Ad esempio, questo errore può essere restituito quando un valore Status ricevuto da un altro spazio degli indirizzi appartiene a uno spazio non noto in questo spazio. Inoltre, gli errori generati dalle API che non restituiscono informazioni sufficienti potrebbero essere convertiti in questo errore.

Mappatura HTTP: errore interno del server 500

INVALID_ARGUMENT

Il client ha specificato un argomento non valido. Tieni presente che è diversa da FAILED_PRECONDITION. INVALID_ARGUMENT indica argomenti problematici indipendentemente dallo stato del sistema (ad es. il nome di file non valido).

Mappatura HTTP: richiesta 400 non valida

DEADLINE_EXCEEDED

Il termine è scaduto prima che l'operazione potesse essere completata. Per le operazioni che modificano lo stato del sistema, questo errore potrebbe essere visualizzato anche se l'operazione è stata completata correttamente. Ad esempio, una risposta corretta di un server potrebbe essere stata ritardata abbastanza a lungo prima della scadenza.

Mappatura HTTP: timeout del gateway 504

NOT_FOUND

Impossibile trovare alcune entità richieste (ad esempio, file o directory).

Nota per gli sviluppatori di server: se una richiesta viene rifiutata per un'intera classe di utenti, come l'implementazione graduale di funzionalità o la 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: 404 non trovato

ALREADY_EXISTS

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

Mappatura HTTP: conflitto 409

PERMISSION_DENIED

Il chiamante non dispone dell'autorizzazione per eseguire l'operazione specificata. PERMISSION_DENIED non deve essere utilizzato per i rifiuti causati dall'esaurimento di alcune risorse (utilizza invece RESOURCE_EXHAUSTED per questi errori). PERMISSION_DENIED non deve essere utilizzato se non è possibile identificare il chiamante (utilizza invece UNAUTHENTICATED per questi errori). Questo codice di errore non implica la validità della richiesta oppure l'entità richiesta esiste o soddisfa altre precondizioni.

Mappatura HTTP: 403 Accesso negato

UNAUTHENTICATED

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

Mappatura HTTP: 401 non autorizzato

RESOURCE_EXHAUSTED

Alcune risorse sono esaurite o forse la loro quota per utente o l'intero file system esaurisce lo spazio disponibile.

Mappatura HTTP: 429 troppe richieste

FAILED_PRECONDITION

L'operazione è stata rifiutata perché il sistema non è in uno 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 scegliere tra FAILED_PRECONDITION, ABORTED e UNAVAILABLE: (a) Utilizza UNAVAILABLE se il client può ritentare solo la chiamata in errore. (b) Utilizza ABORTED se il client deve riprovare a un livello superiore. Ad esempio, quando un'operazione test-set-set specificata dal client non va a buon fine, 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 di sistema non è stato esplicitamente risolto. Ad esempio, se un errore "rmdir" non va a buon fine perché la directory non è vuota, è necessario restituire FAILED_PRECONDITION poiché il client non dovrebbe riprovare, a meno che i file non vengano eliminati dalla directory.

Mappatura HTTP: richiesta 400 non valida

ABORTED

L'operazione è stata interrotta, di solito a causa di un problema di contemporaneità, ad esempio un errore di controllo del sequenziatore o un'interruzione della transazione.

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

Mappatura HTTP: conflitto 409

OUT_OF_RANGE

Si è tentato di eseguire l'operazione oltre l'intervallo valido. Ad esempio, la ricerca o la lettura di fine 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 richiesto di leggere con un offset non compreso nell'intervallo [0,2^32-1], ma genererà OUT_OF_RANGE se gli viene chiesto di leggere da un offset che supera le dimensioni del file correnti.

Si verifica una lieve sovrapposizione tra FAILED_PRECONDITION e OUT_OF_RANGE. Consigliamo di utilizzare OUT_OF_RANGE (l'errore più specifico) quando si applica, in modo che i chiamanti che eseguono l'iterazione di uno spazio possano facilmente cercare un errore OUT_OF_RANGE per rilevare quando hanno finito.

Mappatura HTTP: richiesta 400 non valida

UNIMPLEMENTED

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

Mappatura HTTP: 501 non implementata

INTERNAL

Errori interni. Ciò significa che alcune invarianti previste dal sistema sottostante sono state interrotte. Questo codice è riservato a 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 possibile riprovare a eseguire operazioni non idempotenti.

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

Mappatura HTTP: servizio 503 non disponibile

DATA_LOSS

Perdita o danneggiamento dei dati non recuperabili.

Mappatura HTTP: errore interno del server 500