Skip to content

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

Closed

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 검증 보고의 EuropaSecuritySchemaUpgrade를 Upgrade42210to42300.performDataMigration과 DatabaseUpgradeChecker.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

  1. added
    enhancementNew feature or request
    priority:high운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제
    on Sep 10, 2026
  2. dhslove commented on Sep 10, 2026

    @dhslove
    Author

    S2 #990 검토에서 이 이슈와 함께 처리할 후속 변경을 확인했습니다. 원본 소유 행은 S2에 유지하며 자동 적용/제외하지 않았습니다. PR #1002의 s2-review.tsv와 merges.tsv를 함께 확인해 주세요.

    이들 항목은 공동 검토/검증 대상이며, 번호 순서만으로 모든 변경의 hard dependency를 의미하지 않습니다. 구현 시 해당 원본 행의 최종 판정·적용 SHA·검증 근거를 함께 갱신해야 S2도 마감할 수 있습니다.

  3. dhslove commented on Sep 10, 2026

    @dhslove
    Author

    S2 #990에서 DB/시뮬레이터 기준을 별도 MySQL 8.0.46 컨테이너로 실제 재현했습니다. PR #1002의 DB 비교표를 S4의 출발 증거로 사용합니다.

    • 기준 014895d8f3 / 후보 b7dd4539e3, 각 빌드에서 생성한 SystemVM metadata를 준비한 분리 worktree에서 실행했습니다. 기존 개발 DB/볼륨은 사용하지 않았습니다.
    • mvn -Pdeveloper -pl developer -DskipTests -Ddeploydb: 양쪽 종료0, SQL 오류99건, 최신 버전 4.23.0.0 Complete. 실패 SQL의 정렬 SHA256이 동일합니다.
    • 양쪽 cloud382 tables+35 views, usage31 tables+1 view입니다.
    • -Ddeploydb-simulator: 양쪽 종료1, template ID111의 fk_template_store_ref__template_id 오류, simulator8 tables입니다.
    • 저장 프로시저 구문 분리/복수 SQL 실행, storage_service_instance 누락, backups.extenal_id 오타를 해결해야 합니다. 버전 행이나 종료0만으로 정상 초기화/업그레이드를 판정하면 안 됩니다.

    이 결과는 기존 실패를 분리한 기준이며 설치/업그레이드 PASS가 아닙니다. 기존 데이터 업그레이드·동일 버전 재실행·실패 후 복구는 이 이슈의 필수 검증으로 유지합니다.

  4. dhslove commented on Sep 10, 2026

    @dhslove
    Author

    S4 구현 PR: #1016. 최종 전체 회귀와 공식 CI/RPM 검증 중입니다.

    현재 확인한 결과:

    • 지정 기준 014895d8f3의 전체 DB 복제본을 실제 JDBC 경로로 업그레이드. 원본11,271행은 권한 sort_order 조정 외에 보존, version51행은 완전 동일.
    • 신규/기존 DB의 열 계약5,717개, 인덱스 항목1,698개, 외래 키525개 일치. SQL99오류와 simulator template111 FK 원인을 수정.
    • ALTER 오류 주입 시 종료1/Pending 유지, 복구 후 독립 JVM2개 동시 시작 성공, 반복2회 전체 snapshot 동일.
    • 실제 MySQL 예약8개 동시 요청: 승인1/거부7/잔여0. 실제 Quota 집계: IP3+볼륨24, VM 부착 기간 추가 과금0, credit100→balance73, 재집계 중복0.
    • UI29 suites/348 tests 통과. 새 DB parser/checkpoint/경로 테스트27개와 allocator/실패 회수38개 통과.

    범위 이전 Apache #9590의 QuotaCreditsList 응답/등록 누락을 발견하여 보충했습니다. 고정299개 inventory 외의 선행 의존성으로 별도 기록합니다. 현행 Usage는 KMS 빈 없이 시작됨을 확인했으며 KMS 전체 기능과 빈 이동은 #996에서 함께 반영합니다. 공유 merge와 #978, 실하이퍼바이저/운영 규모 검증은 해당 후속 단계에 유지합니다.

  5. dhslove commented on Sep 10, 2026

    @dhslove
    Author

    S4 구현 #1016 및 증빙 #1017 병합과 upstream/origin/개발 브랜치 동기화를 완료했습니다. 최종 SHA 2b4035e1fb03810ae572bb18fafabb74c22babc7. 검증 보고를 기준으로 이 이슈를 완료 종료합니다. 전체153개 판정/146개 Pending이며 다음 작업은 #993입니다.

    공식 Java12,611/UI348 tests, 실제 JDBC DB 신규·014 전체 복제·실패/동시 복구·관리 서버2회 재시작/API, 예약·Quota 집계, 공식 Rocky9.8/9.7 패키징 및9.8 RPM9개 체크섬을 검증했습니다. Lint 기존13개 오류 분류와 운영 규모/물리 인프라의 후속 게이트는 보고서에 명시했습니다. 증빙 변경은 제품 경로 diff0, License 통과 및 Lint 신규 진단0을 확인했습니다.

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