2.2 KiB
2.2 KiB
kind, slug, title, topic, topicName, project, status, sourceRevision, source
| kind | slug | title | topic | topicName | project | status | sourceRevision | source | |||
|---|---|---|---|---|---|---|---|---|---|---|---|
| REFERENCE | one-sqlstate-with-two-contributors-fails-startup | 같은 SQLState 를 둘이 등록하면 값이 같아도 시작을 실패시킨다 | http-failure-classification | HTTP 실패 분류와 재시도 안전성 | clean-architecture-backend-template | 게시 전 | 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 |
|
같은 SQLState 를 둘이 등록하면 값이 같아도 시작을 실패시킨다
여러 모듈이 같은 SQLSTATE 매트릭스에 기여할 때는 최종 값이 같더라도 중복 등록을 허용하지 않는다. 매핑 값뿐 아니라 어느 모듈이 그 항목을 소유하는지도 계약의 일부로 본다.
관계
- 실패 어휘 세 층과 그 사이를 잇는 SQLState 매트릭스 이 규칙이 적용되는 매핑 계층을 설명한다.
- 인식하지 못한 SQLSTATE 는 추측하지 않는다 매핑 누락과 중복을 모두 명시적으로 다루는 짝이 되는 결정이다.
목적
last-writer-wins 병합이 매핑 소유권 충돌을 숨기지 못하게 한다.
규칙
- 한 SQLSTATE는 한 contributor가 소유한다.
- 두 contributor가 같은 SQLSTATE를 등록하면 매핑 결과가 같아도 startup validation을 실패시킨다.
- 충돌을 해결하려면 한쪽 등록을 제거하거나 소유권을 하나로 합친다.
- map merge 결과만 비교하지 않고 contributor identity를 함께 검사한다.
적용 조건
여러 모듈이 같은 SQLSTATE 또는 오류 코드 매트릭스에 항목을 기여할 때
여러 기여자의 등록 결과가 런타임 failure classification을 결정할 때
예외
기여자가 하나뿐인 매트릭스에는 중복 소유권 검사가 필요하지 않다.
중복 등록 자체를 계약으로 허용하려면 어떤 contributor가 우선하는지 별도 규칙과 검증이 있어야 한다. 현재 이 프로젝트는 그 방식을 선택하지 않는다.
예시
모듈 A와 B가 모두 같은 SQLSTATE를 같은 category로 등록해도 “결과가 같으니 괜찮다”고 병합하지 않는다. 둘 중 누가 이 매핑을 변경해야 하는지 알 수 없기 때문이다.