1.3 KiB
1.3 KiB
id, status
| id | status |
|---|---|
| ac-0030 | active |
데몬 소유자 이전과 기존 배정의 동일 소유자 불변식
Criterion
portfolio assignment와 daemon owner transfer의 실행 순서와 관계없이 저장된 non-null assignment는 daemon.owner_user_id == portfolio.owner_user_id를 만족해야 하며, 참조 중 daemon의 owner transfer는 HTTP 409로 거부되어 daemon owner, portfolio assignment와 broker credentials를 모두 보존해야 한다.
Verification
- 성공 조건: assignment-first에서는 transfer가 409로 실패하고, transfer-first에서는 이전 owner의 assignment가 foreign daemon 404로 실패하며, 미참조 transfer는 성공하고 기존 credential invalidation 정책을 유지한다.
- 실패·경계 조건: foreign owner 관계가 commit되거나 충돌한 transfer가 owner·assignment·credential 중 일부만 변경하거나 race가 timeout·deadlock으로 끝나면 실패한다.
- 검사 방법: migration head가 적용된 disposable PostgreSQL에서 순차 참조 transfer, 미참조 transfer와 양방향 race를 별도 connection/thread로 반복 실행한다.
- 현재 구현 평가:
e90519a가 daemonFOR UPDATE→ reference 검사 → credential 삭제 → owner UPDATE 순서를 구현했고 2차 QC에서 integration12 passed와 race 반복5/5 passed를 확인했다.