46 lines
2.0 KiB
Markdown
46 lines
2.0 KiB
Markdown
---
|
|
kind: PROJECT_DECISION
|
|
slug: an-unrecognised-sqlstate-is-not-guessed
|
|
title: 인식하지 못한 SQLSTATE 는 추측하지 않는다
|
|
topic: http-failure-classification
|
|
topicName: HTTP 실패 분류와 재시도 안전성
|
|
project: clean-architecture-backend-template
|
|
status: 게시 전
|
|
decisionStatus: ADOPTED
|
|
source:
|
|
- final/document.md#a05
|
|
- final/document.md#10-2
|
|
- final/document.md#5-1
|
|
- final/document.md#a05 §7.1
|
|
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
|
|
---
|
|
|
|
# 인식하지 못한 SQLSTATE 는 추측하지 않는다
|
|
|
|
매트릭스에 등록되지 않은 SQLSTATE를 이름이나 class prefix가 비슷하다는 이유로 기존 failure category에 넣지 않는다.
|
|
|
|
## 근거
|
|
|
|
- **실패 어휘 세 층과 그 사이를 잇는 SQLState 매트릭스**
|
|
공급자 오류와 애플리케이션 범주 사이에 명시적 번역 계층을 둔다.
|
|
- **같은 SQLState 를 둘이 등록하면 값이 같아도 시작을 실패시킨다**
|
|
매핑의 값과 소유권을 둘 다 명시적으로 유지한다.
|
|
|
|
## 결정문
|
|
|
|
등록되지 않은 SQLSTATE는 기존 category로 추측해 분류하지 않는다. 정책에 필요한 상태라면 매트릭스에 명시적으로 등록하고 해당 매핑의 소유자를 정한다.
|
|
|
|
## 판단 이유
|
|
|
|
SQLSTATE의 접두사나 주변 예외가 비슷해도 operation semantics와 retry 안전성이 같다는 보장은 없다. 추측 분류는 새로운 데이터베이스 상태를 기존 정책에 조용히 편입시킨다.
|
|
|
|
명시 등록을 요구하면 새 상태를 지원하는 순간 코드 리뷰와 테스트에 변경점이 생긴다. 알 수 없는 값을 아는 값처럼 다루지 않는 쪽을 선택한다.
|
|
|
|
## 영향
|
|
|
|
감수하는 것 : 새로운 SQLSTATE가 나타나면 매핑을 추가하기 전까지 자동 복구 정책을 적용하지 못할 수 있다.
|
|
|
|
얻는 것 : 미지의 오류가 retryable 또는 permanent로 조용히 오분류되지 않는다.
|
|
|
|
얻는 것 : 매핑 추가 시 어떤 모듈이 그 의미를 소유하는지 함께 검토할 수 있다.
|