gRPC レスポンスで返されるステータス コードは次のとおりです。この内容は、このサイトに記載されているすべてのバージョンの gRPC に適用されます。
コード | ステータス | 説明 |
---|---|---|
0 | OK |
Success で返品 |
1 | CANCELLED |
オペレーションがキャンセルされました。通常、キャンセルは呼び出し元により行われます。 |
2 | UNKNOWN |
たとえば、別のアドレス空間から受信した Status の値がこのアドレス空間で未知のエラー空間に属している場合などに、このエラーが返されます。また、十分なエラー情報を返さない API によって発生したエラーは、このエラーに変換できます。 |
3 | INVALID_ARGUMENT |
クライアントが無効な引数を指定しました。 |
4 | DEADLINE_EXCEEDED |
オペレーションが完了する前に期限が切れました。システムの状態を変更するオペレーションの場合、オペレーションが正常に終了しても、このエラーが返されることがあります。たとえば、サーバーからの正常なレスポンスが期限切れになるほど遅延する場合もあります。 |
5 | NOT_FOUND |
リクエストされたエンティティが見つかりませんでした。 |
6 | ALREADY_EXISTS |
クライアントが作成しようとしたエンティティはすでに存在します。 |
7 | PERMISSION_DENIED |
呼び出し元には、指定されたオペレーションを実行する権限がありません。リソースの枯渇が原因で拒否された場合は PERMISSION_DENIED を使用しないでください。このようなエラーには代わりに RESOURCE_EXHAUSTED を使用してください。呼び出し元が特定できない場合は、PERMISSION_DENIED を使用しないでください(このようなエラーには代わりに UNAUTHENTICATED を使用します)。PERMISSION_DENIED エラーコードが返された場合、リクエストが有効であること、リクエストされたエンティティが存在すること、および他の事前条件が満たされていることを意味するものではありません。 |
8 | RESOURCE_EXHAUSTED |
ユーザーごとの割り当て、またはファイル システム全体で容量が不足しているため、一部のリソースが枯渇しています。 |
9 | FAILED_PRECONDITION |
システムがオペレーションの実行に必要な状態ではないため、オペレーションが拒否されました。たとえば、削除されるディレクトリが空でない、rmdir オペレーションがディレクトリ以外に適用されているなどの状態です。 |
10 | ABORTED |
オペレーションは、通常、シーケンサー チェックの失敗、またはトランザクションの中止などの同時実行の問題のために中止されています。 |
11 | OUT_OF_RANGE |
オペレーションが有効な範囲を超えて試行されました。 |
12 | UNIMPLEMENTED |
オペレーションが実装されていないか、このサービスでサポートされていないか、有効にされていません。 |
13 | INTERNAL |
内部エラー。これは、基盤となるシステムで予期される一部の不変条件から逸脱していることを意味します。このエラーコードは深刻なエラーのために予約されています。 |
14 | UNAVAILABLE |
サービスは現在利用できません。これは、バックオフで再試行すると修正できる可能性が高い一時的な状態です。 |
15 | DATA_LOSS |
回復不能なデータの消失や破損。 |
16 | UNAUTHENTICATED |
リクエストには、オペレーションのための有効な認証情報がありません。 |
複数のエラーコードが該当する場合があります。サービスは、該当する最も具体的なエラーコードを返す必要があります。たとえば、両方のコードが該当する場合、FAILED_PRECONDITION
より OUT_OF_RANGE
を優先します。同様に、FAILED_PRECONDITION
より NOT_FOUND
または ALREADY_EXISTS
を優先します。
FAILED_PRECONDITION、ABORTED、UNAVAILABLE の違い
FAILED_PRECONDITION
、ABORTED
、UNAVAILABLE
のいずれを使用するかを判断する際の参考となるリトマス試験は次のとおりです。
- クライアントが失敗した呼び出しのみを再試行できる場合は、
UNAVAILABLE
を使用します。 - クライアントが上位レベルで再試行する必要がある場合(クライアント指定のテストアンドセットが失敗し、リードモディファイライト シーケンスを再起動する必要がある場合など)は、
ABORTED
を使用します。 - システム状態が明示的に修正されるまでクライアントが再試行しない場合は、
FAILED_PRECONDITION
を使用します。たとえば、ディレクトリが空でないため「rmdir」が失敗した場合は、ディレクトリからファイルが削除されない限りクライアントは再試行すべきではないため、FAILED_PRECONDITION
を返すことをおすすめします。
INVALID_ARGUMENT、FAILED_PRECONDITION、OUT_OF_RANGE の違い
INVALID_ARGUMENT
、FAILED_PRECONDITION
、OUT_OF_RANGE
の選択に役立つリトマス試験は次のとおりです。
- システムの状態に関係なく、引数に問題がある場合は
INVALID_ARGUMENT
を使用します。(例: URL の形式が正しくない場合) - システムの状態が原因で値が範囲外の場合は、
OUT_OF_RANGE
を使用します。たとえば、start_date がstart_date_restrict
より前の場合。 - システムの状態が原因で値が無効なものの、
OUT_OF_RANGE
値ではない場合は、FAILED_PRECONDITION
を使用します。