Codes de réponse de renvoi de l'état

Les codes d'état ci-dessous peuvent être renvoyés dans les réponses gRPC. Ces données s'appliquent à l'ensemble des versions de gRPC documentées sur ce site.

Code État Remarques
0 OK Retour le Success
1 CANCELLED L'opération a été annulée, généralement par l'appelant.
2 UNKNOWN Par exemple, cette erreur peut être renvoyée lorsqu'une valeur d'état reçue en provenance d'un autre espace d'adressage appartient à un espace d'erreurs inconnu dans cet espace d'adressage. De plus, les erreurs des API qui ne renvoient pas suffisamment d'informations relatives aux erreurs peuvent être converties dans cette erreur.
3 INVALID_ARGUMENT Le client a spécifié un argument non valide.
4 DEADLINE_EXCEEDED Le délai a expiré avant que l'opération ne soit terminée. Pour les opérations qui modifient l'état du système, cette erreur peut être affichée même si l'opération s'est terminée avec succès. Par exemple, une réponse réussie d'un serveur qui a été retardée suffisamment longtemps pour que le délai expire.
5 NOT_FOUND Impossible de trouver l'entité demandée.
6 ALREADY_EXISTS L'entité qu'un client a essayé de créer existe déjà.
7 PERMISSION_DENIED L'appelant n'est pas autorisé à exécuter l'opération spécifiée. N'utilisez pas PERMISSION_DENIED pour les refus causés par l'épuisement d'une ressource. Utilisez plutôt RESOURCE_EXHAUSTED pour ces erreurs. N'utilisez pas PERMISSION_DENIED si l'appelant ne peut pas être identifié (utilisez plutôt UNAUTHENTICATED pour ces erreurs). Le fait de recevoir un code d'erreur PERMISSION_DENIED n'implique pas que la requête soit valide ni que l'entité demandée existe ou qu'elle répond à d'autres prérequis.
8 RESOURCE_EXHAUSTED Certaines ressources ont été épuisées ; par exemple, un quota par utilisateur a été atteint ou le système de fichiers dans son intégralité manque d'espace.
9 FAILED_PRECONDITION L'opération a été rejetée car le système n'est pas dans un état requis pour exécuter l'opération. Par exemple, le répertoire à supprimer n'est pas vide ou une opération rmdir est appliquée à un emplacement qui n'est pas un répertoire.
10 ABORTED L'opération a été abandonnée, généralement en raison d'un problème de simultanéité, tel qu'un échec de vérification du séquenceur ou un abandon de transaction.
11 OUT_OF_RANGE L'opération a été tentée au-delà de la plage valide.
12 UNIMPLEMENTED L'opération n'est pas mise en œuvre ou n'est pas prise en charge/activée dans ce service.
13 INTERNAL Erreurs internes. Cela signifie que certains invariants attendus par le système sous-jacent n'ont pas été respectés. Ce code d'erreur est réservé aux erreurs graves.
14 UNAVAILABLE Le service est actuellement indisponible. Il s'agit probablement d'une condition temporaire qui peut être corrigée en réessayant après avoir laissé passer un intervalle entre les tentatives.
15 DATA_LOSS Perte ou corruption de données irrécupérable.
16 UNAUTHENTICATED La requête ne dispose pas d'identifiants d'authentification valides pour l'opération.

Parfois, plusieurs codes d'erreur peuvent s'appliquer. Dans ce cas, le service doit renvoyer le code qui s'applique le plus spécifiquement. Par exemple, préférez OUT_OF_RANGE à FAILED_PRECONDITION si les deux codes s'appliquent. De même, préférez NOT_FOUND ou ALREADY_EXISTS à FAILED_PRECONDITION.

Comparaison des codes FAILED_PRECONDITION, ABORTED et UNAVAILABLE

Voici un test décisif qui peut vous aider à choisir entre FAILED_PRECONDITION, ABORTED et UNAVAILABLE:

  • Utilisez UNAVAILABLE si le client peut retenter uniquement l'appel qui a échoué.
  • Utilisez ABORTED si le client doit effectuer une nouvelle tentative à un niveau supérieur, par exemple lorsqu'un test-and-set spécifié par le client échoue, indiquant que le client doit redémarrer une séquence lecture-modification-écriture.
  • Utilisez FAILED_PRECONDITION si le client ne doit pas retenter l'appel tant que l'état du système n'a pas été explicitement corrigé. Par exemple, si une opération "rmdir" échoue parce que le répertoire n'est pas vide, il est préférable de renvoyer FAILED_PRECONDITION, car le client ne doit pas retenter l'appel tant que les fichiers n'ont pas été supprimés du répertoire.

Comparaison des codes INVALID_ARGUMENT, FAILED_PRECONDITION et OUT_OF_RANGE

Voici un test décisif qui peut vous aider à choisir entre INVALID_ARGUMENT, FAILED_PRECONDITION et OUT_OF_RANGE:

  • Utilisez INVALID_ARGUMENT si les arguments posent problème quel que soit l'état du système. (par exemple, une URL mal rédigée)
  • Utilisez OUT_OF_RANGE si une valeur est en dehors de la plage en raison de l'état du système. Par exemple, la date de début est antérieure à start_date_restrict.
  • Utilisez FAILED_PRECONDITION si la valeur n'est pas valide en raison de l'état du système, mais ne correspond pas à une valeur OUT_OF_RANGE.