Skip to content

[DR][P1] 기존 대상 VM의 동적 오퍼링 상세 누락으로 페일오버 시작 NPE 발생 #975

Description

@dhslove

부모 #950. #970 실환경 RBD UI 검증에서 발견. 우선순위 P1.

재현

32 Mold Plan 51 (7ec74483-8554-415d-ac56-f62f8b17fbd0), 대상 VM 287, 동적 offering 11. Plan에는 대상 CPU 4 / speed 2100 / memory 8192가 저장되어 있지만 VM details에는 cpuNumber/cpuSpeed/memory가 없다. 2026-09-10 FAILOVER Run 415는 엔진 CUTOVER_READY 이후에도 RUNNING/runtime-transfer에 남고, projection 로그에서 ServiceOffering.getCpu() null unboxing NPE가 반복된다.

스택: CapacityManagerImpl.checkIfHostHasCpuCapabilityAndCapacity:1069 → UserVmManagerImpl.startVirtualMachineUnchecked:6180 → DrTargetMaterializationServiceImpl.ensureTargetPoweredOn:195. 새 대상 생성 시 buildTargetVmDetails는 dynamic 값을 넣지만 기존 대상 재사용/power-on에서는 누락 복구가 없다. 회귀 유입 커밋은 미확정.

최소 설계

DR 대상 power-on 직전에 동적 offering에서 필요한 VM detail이 비어 있는지 검사한다. Plan의 저장된 명시적 target CPU/speed/memory만 사용하여 누락된 값만 채우며 기존 대상 값을 덮지 않는다. 원본 실시간 조회/원본 CPU 일치 강제/임의 기본값은 금지한다. 필요한 값이 Plan에도 없으면 TARGET_COMPUTE_SPEC_REQUIRED로 명확하게 거절한다. 모든 필요값을 먼저 검증한 뒤 기록한다. 고정 offering은 영향을 받지 않는다.

완료 기준

기존 대상의 누락 상세 복구와 UI 시작 성공, 기존 대상 독립 사양 보존, Plan 값 부재 시 명확한 실패, source unreachable 상태에서 source RPC 없는 검증. 사용자 사양 선택 기능 #954/#955와 별개로 기존 오류를 먼저 수정한다. #970 검증 차단 해소용 별도 커밋으로 추적한다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions