부모 에픽: #950. 관련: #971, #981. 우선순위 P1.
실환경 재현
31(qcow2), 32(RBD) 클러스터에서 원본 Mold TCP 8080 연결을 차단하고 원본 독립 Test Failover를 수행했다. 대상 VM 부팅 및 QGA 검증이 성공했고 Run은 SUCCEEDED, 세션은 ACTIVE이다. getDrPlan의 stopTestFailover.enabled=true인데 UI 정리 메뉴는 주기적 갱신 후 disabled가 된다. 새 페이지에서도 일시적으로 활성화됐다가 비활성화되어 정리를 진행하기 어렵다.
원인과 수정
DrPlanList.fetchProtectionView는 version>=4 보호 스냅샷을 authoritative로 간주하여 actionavailability를 갱신한다. 원본 상태 조회 실패 중에는 스냅샷이 대상 작업 완료보다 오래될 수 있다. 최초 fetchDetail의 최신 DB 병합만으로는 이후 polling의 덮어쓰기를 방지하지 못한다.
각 fetchProtectionView에서 getDrPlan의 DB 기반 응답도 읽고 reconcileDrPlanProjection으로 최신 작업 가능 상태를 최종 반영한다. 원본/Agent 직접 조회를 UI에 추가하지 않는다. 권한·readiness·실행 중 작업에 대한 서버 검사는 유지한다.
완료 기준
- 원본 단절을 유지한 채 Test Failover SUCCEEDED 후 정리 메뉴가 활성 상태로 유지된다.
- UI Test Cleanup이 성공하고 임시 VM 및 아티팩트가 정리된다.
- 실제 진행 중 작업과 다른 서버 blocker를 우회하지 않는다.
- 스냅샷과 DB 상태 불일치 회귀 검증 및 31/32 UI 검증을 기록한다.
#971 작업 브랜치에서 함께 수정·검증하며, 이 이슈는 실패 원인과 후속 추적을 위한 별도 기록이다.
부모 에픽: #950. 관련: #971, #981. 우선순위 P1.
실환경 재현
31(qcow2), 32(RBD) 클러스터에서 원본 Mold TCP 8080 연결을 차단하고 원본 독립 Test Failover를 수행했다. 대상 VM 부팅 및 QGA 검증이 성공했고 Run은 SUCCEEDED, 세션은 ACTIVE이다. getDrPlan의 stopTestFailover.enabled=true인데 UI 정리 메뉴는 주기적 갱신 후 disabled가 된다. 새 페이지에서도 일시적으로 활성화됐다가 비활성화되어 정리를 진행하기 어렵다.
원인과 수정
DrPlanList.fetchProtectionView는 version>=4 보호 스냅샷을 authoritative로 간주하여 actionavailability를 갱신한다. 원본 상태 조회 실패 중에는 스냅샷이 대상 작업 완료보다 오래될 수 있다. 최초 fetchDetail의 최신 DB 병합만으로는 이후 polling의 덮어쓰기를 방지하지 못한다.
각 fetchProtectionView에서 getDrPlan의 DB 기반 응답도 읽고 reconcileDrPlanProjection으로 최신 작업 가능 상태를 최종 반영한다. 원본/Agent 직접 조회를 UI에 추가하지 않는다. 권한·readiness·실행 중 작업에 대한 서버 검사는 유지한다.
완료 기준
#971 작업 브랜치에서 함께 수정·검증하며, 이 이슈는 실패 원인과 후속 추적을 위한 별도 기록이다.