다음 상태 코드가 gRPC 응답에서 반환될 수 있습니다. 이는 이 사이트에 설명된 모든 버전의 gRPC에 적용됩니다.
코드 | 상태 | Notes |
---|---|---|
0 | OK |
Success 에 돌아오기 |
1 | CANCELLED |
작업이 취소되었습니다. 대개 호출자에 의해 취소됩니다. |
2 | UNKNOWN |
예를 들어 다른 주소 공간에서 수신한 상태 값이 이 주소 공간에서 알 수 없는 오류 공간에 속하는 경우 이 오류가 반환될 수 있습니다. 또한 충분한 오류 정보를 반환하지 않는 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
를 사용합니다.