Skip to content

[Europa][4.23][S4] 동일 버전 DB 업그레이드·자원 할당·Usage 및 Quota 통합 #992

Description

@dhslove

목적과 범위

부모 Epic: #987

014895d Europa DB에서 목표 코드로 이동하는 migration을 확립하고 allocator, reservation/limit, Usage/Quota API·UI·SQL 변경을 통합한다. 기존 #978은 별도 결함 이슈를 재사용한다.

기준과 선행 조건

완료 기준

  • 기존 Europa도 4.23.0.0-SNAPSHOT 계열임을 고려해 버전 번호만 비교하는 업그레이드 판단을 피한다.
  • DatabaseUpgradeChecker의 최신 version 행 삭제/동일 버전 재실행, Europa Before/After, 업스트림 upgrade 체인의 충돌을 검토한다.
  • 신규 설치와 기존 DB 복제본 업그레이드, 관리 서버 반복 재시작에서 데이터·인덱스·키 migration의 멱등성을 검증한다.
  • Quota/Usage 집계·예약 획득/해제·동시성·배포/복원 실패 시 자원 회수와 API/UI 일치를 검증한다.
  • S3 인증, S5C KMS 및 타 기능 migration 의존성을 선행 반영한다. SQL을 마지막에 일괄 적용하지 않는다.

검증

실제 JDBC ScriptRunner 경로의 신규·기존·부분 적용 DB, 실패 복구·재실행·동시성 및 값 검증. mysql CLI 성공이나 스키마 version만으로 통과하지 않는다.

공통 진행 규칙

  • 해당 작업 코드의 원본 SHA는 Epic의 developer/history/ 추적표로 관리한다. 원본 SHA별 판정/PR/적용 SHA/검증 근거를 갱신한다.
  • 체리픽·적응 수정은 원본 의도와 Europa 계약을 보존하며, patch-id/같은 제목/역적용 성공만으로 완료 처리하지 않는다.
  • PR base는 ablecloud-team/ablestack-cloud:ablestack-europa이다. PR은 이 하위 이슈를 연결하고 부모 Epic을 자동 종료하지 않는다.
  • 소스/Git/설치/로컬 검증은 Docker 내부에서 진행하며, 공식 산출물은 Actions 결과를 사용한다. 기존 DB/볼륨은 초기화하지 않는다.
  • 구현·병합·검증이 완료되면 부모 Epic의 진행표와 추적표를 함께 갱신한다. 새로운 발견과 범위 변경 근거는 코멘트로 남긴다.

S1 확정 추적 자료 (2026-09-10)

  • 초기 추적 기준 / 299개 inventory / 의존성
  • 이 이슈의 직접 배정 원본 SHA: 38개. workstream=S4로 필터링한다. 관련 기능 변경은 related_workstreams와 의존성도 함께 확인한다.
  • merge 해결 분석: merges.tsv. S2가 19개를 총괄하고 기능 소유 이슈가 공동 검증한다.
  • 사용자 확정 DB 출발점: 014895d8f3; 신규 설치·기존 데이터 업그레이드·동일 버전 재실행을 검증한다.
  • 위 초기 링크는 S1 당시 자료다. S4 직접38개와 S2 연계2개의 현재 최종 판정은 아래 완료 기록과 최신 추적표를 기준으로 한다.

S3 인수 사항

  • 인수 브랜치: Europa 5d12d16087121a48af6724e2c37097dac833458e, 구현 [Europa][S3] CloudStack 4.23 인증·권한·API 통합 #1009 및 검증 기록 [Europa][S3] 원본 판정과 검증 결과 확정 #1014. 사용자 지정 DB 출발점 014895d8f3는 유지한다.
  • S3 검증 보고EuropaSecuritySchemaUpgradeUpgrade42210to42300.performDataMigrationDatabaseUpgradeChecker.afterUpgradeAblestack에서 호출한다. 동일4.23 기존 DB에도 적용되는 경로를 공통 upgrade 체인과 함께 보존·검증한다.
  • 기존 key pair/secret/provider 및 명시적 DENY 보존, description1024, OAuth domain 열·인덱스·FK, 재실행·중간 실패 후 복구 fixture는 MySQL8.0에서 통과했다. 인증 DDL과 최소 identity 테이블의 격리 fixture이며 전체 운영 DB 복제/신규 설치 검증을 대신하지 않는다.
  • S2에서 기준/후보에 공통 재현된 SQL99개 오류 및 simulator FK 오류, 실제 ScriptRunner 오류 중단 정책과 전체 데이터·재시작 검증은 이 단계에서 계속한다. S3의 API/인증 회귀와 새 스키마 helper를 함께 검증한다.
  • S3 공동 검증을 마쳤어도 공유 merge는 Pending이다. inventory/merges.tsv의 남은 S4 및 side commit 범위를 마감한다.

S4 완료 기록 (2026-09-10)

구현 #1016, 검증/추적 #1017을 일반 merge로 병합했다. upstream/origin Europa와 로컬 개발 브랜치를 2b4035e1fb03810ae572bb18fafabb74c22babc7로 동기화했다. 사용자 지정 DB 출발점014895d8f3은 유지했다.

  • 검증 보고 / 원본40개 판정 / 보충 의존성. S4 직접38개+S2연계2개는 Applied6/Adapted19/Already Satisfied14/Excluded1. 고정299개 전체는 최종153개/Pending146개다.
  • 동일4.23 migration은 기존 version 행을 보존하며 명명된 Pending/Complete 단계로 실행한다. SQL 실패가 시작 오류로 전파되고 부분 실패 후 복구·동시 시작·반복 실행을 통과했다. S2 SQL99 오류와 simulator template111 FK 인수 사항을 해결했다.
  • 실제014 전체 DB 복제본의 기존11,271행(권한 sort_order60행 조정 제외)과 version51행을 보존했다. 신규/업그레이드 결과의5,717열·1,698index항목·525FK 계약을 대조했다. 실제 최종 관리 서버 시작과2회 재시작마다 로그인·Quota 조회·기존 인증/권한/checkpoint 보존을 확인했다. 운영 dump가 아닌 전체 기준 구조의 합성 fixture다.
  • 실제 DB 예약8개 동시 요청 승인1/거부7/잔여0, 부분 persist/해제·lock 실패 회수 회귀, Quota 집계27/잔액73 및 재집계 무변경을 검증했다. API/UI348 tests와 기존 Europa 후보/GPU/TPM/UEFI/fast-clone/S3 import 계약을 유지했다.
  • 로컬 Java11,838 tests 및160모듈 install, 공식 Java171모듈/12,611 tests(실패0·오류0·skip17), 공식 UI/License와 Rocky9.8/9.7 패키징 통과. 공식9.8 RPM9개 SHA256 확인.
  • 전체 Lint는 기존13개 실패 분류/이번 변경 경로 신규 진단0건이다. 기존 조건으로 skipped인 Simulator/Coverage/Sonar를 PASS로 계산하지 않는다. 실제 물리 배포/복원·운영 규모 데이터·클러스터/TLS 및 UI 육안 검수는 후속 기능/S8에서 수행한다.
  • 범위 이전 Apache #9590의 실제 Quota UI 응답/등록 의존성을 보완했다. 고정299개 집합은 늘리지 않았다. 공유 merge4개의 S4 해결 부분을 검증했지만 남은 side commit은 Pending으로 보존했다.

S5A #993은 변경된 reservation handles와 새 명명된 DB checkpoint 규칙을 인수한다. S5C #996의 KMS와 Usage 빈 이동은 함께 통합하며, 현재 실제 Usage context가 KMS 빈 없이 시작함을 확인했다. S6 #997의 soft-delete metadata는 해당 모델 도입 시 연결한다. #978/#994 전체 결함을 이번 완료로 닫지 않는다. 부모 Epic #987과 S2 #990은 OPEN 유지한다.

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

    enhancementNew feature or requestpriority:high운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions