다음 상태 코드가 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
을(를) 사용합니다.