1. Status Code
- gRPC 호출은 마지막에 status 하나를 클라이언트에게 돌려줌
- 보통 code, description으로 구성됨
2. 자주 쓰이는 코드
| 코드 | 의미 | 생성주체 | 재시도 관점 | 예시 |
| OK | 성공 | 서버/라이브러리 | 재시도 불필요 | 정상 저장 |
| CANCELLED | 호출 취소 | 주로 호출자/서버 컨텍스트 | 보통 자동 재시도 아님 | 클라이언트 취소, 서버에서 cancel 감지 |
| DEADLINE_EXCEEDED | 정해진 시간 안에 응답 못 받음 | 라이브러리에서 자주 생성 | 상황 따라 가능 | 3.5초 deadline 초과 |
| INVALID_ARGUMENT | 입력값 자체가 잘못됨 | 애플리케이션이 직접 | 같은 요청 재시도 의미 없음 | 빈 content, 잘못된 roomId 형식 |
| NOT_FOUND | 대상 없음 | 애플리케이션이 직접 | 상태 바뀌기 전엔 의미 없음 | 채팅방 없음 |
| ALREADY_EXISTS | 이미 존재함 | 애플리케이션이 직접 | 보통 의미 없음 | 같은 메시지 중복 생성 |
| FAILED_PRECONDITION | 현재 상태상 실행 불가 | 애플리케이션이 직접 | 상태 수정 전 재시도 의미 없음 | 이미 나간 유저가 전송 |
| ABORTED | 동시성 충돌/트랜잭션 중단 | 애플리케이션이 직접 | 상위 작업 재시도 후보 | 낙관적 락 충돌 |
| RESOURCE_EXHAUSTED | 리소스 부족 | 라이브러리/애플리케이션 둘 다 가능 | 보통 백오프 후 가능 | quota 초과, 큐 포화 |
| UNIMPLEMENTED | 미구현/미지원 | 라이브러리/서버 | 재시도 의미 없음 | 없는 RPC 호출 |
| INTERNAL | 내부 오류 | 라이브러리/서버 | 보통 바로 재시도 비추천 | 직렬화/불변식 깨짐 |
| UNAVAILABLE | 현재 서비스 사용 불가 | 라이브러리에서 자주 생성 | 백오프 후 재시도 후보 | 서버 다운, 연결 실패 |
| UNAUTHENTICATED | 인증 실패 | 라이브러리/애플리케이션 | 자격 증명 수정 후 | 토큰 없음/유효하지 않음 |
| PERMISSION_DENIED | 권한 없음 | 애플리케이션 | 권한 없으면 의미 없음 | 해당 방 쓰기 권한 없음 |
| UNKNOWN | 알 수 없는 오류 | 라이브러리/서버 | 상황 따라 다름 | 예외가 애매하게 변환됨 |
출처
'Network' 카테고리의 다른 글
| [gRPC] Deadlines (0) | 2026.04.17 |
|---|---|
| [gRPC] 1. What is gRPC? (0) | 2025.08.26 |
| [IBM Technology] What are DNS Zones And Records? (0) | 2025.03.29 |
| [IBM Technology] What is DNS? (0) | 2025.03.29 |