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