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 d'un autre espace d'adressage appartient à un espace d'erreur inconnu de cet espace d'adressage. En outre, les erreurs générées par des API qui ne renvoient pas suffisamment d'informations peuvent être converties en cette erreur.
3 INVALID_ARGUMENT Le client a spécifié un argument non valide.
4 DEADLINE_EXCEEDED Le délai a expiré avant la fin de l'opération. Pour les opérations qui modifient l'état du système, cette erreur peut être renvoyée même si l'opération a abouti. (par exemple, une réponse positive d'un serveur qui a été suffisamment retardée pour que le délai expire).
5 NOT_FOUND L'entité demandée est introuvable.
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). Recevoir un code d'erreur PERMISSION_DENIED ne signifie pas que la requête est valide, que l'entité demandée existe ou qu'elle remplit d'autres conditions préalables.
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 très probablement d'une condition temporaire qui peut être corrigée si vous effectuez de nouvelles tentatives avec 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 ne relancer que l'appel ayant échoué.
  • Utilisez ABORTED si le client doit effectuer de nouvelles tentatives à un niveau supérieur, par exemple en cas d'échec d'une opération de test et de définition spécifiée par le client, ce qui indique que le client doit redémarrer une séquence lecture-modification-écriture.
  • Utilisez FAILED_PRECONDITION si le client ne doit pas effectuer de nouvelle tentative tant que l'état du système n'a pas été explicitement corrigé. Par exemple, si un "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 réessayer, sauf si les fichiers sont 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 dont le format est incorrect)
  • Utilisez OUT_OF_RANGE si une valeur est en dehors de la plage en raison de l'état du système. Par exemple, la valeur start_date est antérieure au start_date_restrict.
  • Utilisez FAILED_PRECONDITION si la valeur n'est pas valide en raison de l'état du système, mais qu'il ne s'agit pas d'une valeur OUT_OF_RANGE.