Repository navigation
[Europa][4.23][S4] 동일 버전 DB 업그레이드·자원 할당·Usage 및 Quota 통합 #992
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or requestpriority:high운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제
Description
목적과 범위
부모 Epic: #987
014895d Europa DB에서 목표 코드로 이동하는 migration을 확립하고 allocator, reservation/limit, Usage/Quota API·UI·SQL 변경을 통합한다. 기존 #978은 별도 결함 이슈를 재사용한다.
기준과 선행 조건
- Europa 시작:
014895d8f3dc2f062f379b51ee62d36a0adae88a - Apache 범위:
3166e64891fc75d4d32b66d874cff3f613b09b52..463f8d0294702a920e8020b62ae3b67f52ae1473(4.23.0.0) - 작업 코드:
S4 - 선행/연계: [Europa][4.23][S1] 원본 커밋 추적표·merge 해결 내역·의존성 기준 확정 #989, [Europa][4.23][S2] Rocky 9.8 검증 기반·빌드 의존성·CI 및 라이선스 정비 #990
- S2는 전체 이슈 종료가 아니라
baseline_ready게이트(기준 실패 분리·검증 환경 확보)를 착수 조건으로 한다. 기능별 소스/DB/API 의존성은 추적표가 우선한다. - 현재 상태: DONE — 구현 S4: 동일 버전 Europa DB migration과 allocator·Usage·Quota 통합 #1016 및 검증/추적 [Europa][S4] #992 검증 결과와 원본별 판정 확정 #1017 병합, Europa
2b4035e1fb03810ae572bb18fafabb74c22babc7동기화
완료 기준
- 기존 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 유지한다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestpriority:high운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제운영 안정성 또는 데이터 안전에 우선 대응이 필요한 과제
Activity
dhslove commentedon Sep 10, 2026
S2 #990 검토에서 이 이슈와 함께 처리할 후속 변경을 확인했습니다. 원본 소유 행은 S2에 유지하며 자동 적용/제외하지 않았습니다. PR #1002의
s2-review.tsv와merges.tsv를 함께 확인해 주세요.64ac0822b439— merge conflict fixes (merge conflict fixes apache/cloudstack#13046)a7f9756d6267— Remove realhostip references from the code (Remove realhostip references from the code apache/cloudstack#12856)288f9a9fd73e— framework/spring: throw RuntimeException when fail to start or load a module (framework/spring: throw RuntimeException when fail to start or load a module apache/cloudstack#13186)ce52b9dae0ce— Merge branch '4.20' into 20.3.0-secd5101b0c905a— Merge branch '4.20' into 4.22b3b9caddc191— Merge remote-tracking branch 'apache/4.22'c7e2c748f746— Merge remote-tracking branch 'apache/4.20' into 4.22265b554d608e— Fix 4.22 build failures after forward-merge and rename 42010to42100 to 42040to4210013742921d1ec— Fix simulator test failures on main (Fix simulator test failures on main apache/cloudstack#13608)이들 항목은 공동 검토/검증 대상이며, 번호 순서만으로 모든 변경의 hard dependency를 의미하지 않습니다. 구현 시 해당 원본 행의 최종 판정·적용 SHA·검증 근거를 함께 갱신해야 S2도 마감할 수 있습니다.
dhslove commentedon Sep 10, 2026
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이 동일합니다.-Ddeploydb-simulator: 양쪽 종료1, template ID111의fk_template_store_ref__template_id오류, simulator8 tables입니다.storage_service_instance누락,backups.extenal_id오타를 해결해야 합니다. 버전 행이나 종료0만으로 정상 초기화/업그레이드를 판정하면 안 됩니다.이 결과는 기존 실패를 분리한 기준이며 설치/업그레이드 PASS가 아닙니다. 기존 데이터 업그레이드·동일 버전 재실행·실패 후 복구는 이 이슈의 필수 검증으로 유지합니다.
dhslove commentedon Sep 10, 2026
S4 구현 PR: #1016. 최종 전체 회귀와 공식 CI/RPM 검증 중입니다.
현재 확인한 결과:
범위 이전 Apache #9590의 QuotaCreditsList 응답/등록 누락을 발견하여 보충했습니다. 고정299개 inventory 외의 선행 의존성으로 별도 기록합니다. 현행 Usage는 KMS 빈 없이 시작됨을 확인했으며 KMS 전체 기능과 빈 이동은 #996에서 함께 반영합니다. 공유 merge와 #978, 실하이퍼바이저/운영 규모 검증은 해당 후속 단계에 유지합니다.
Adapt S4 migrations and quota reservations to same-version Europa
Record S4 same-version migration and Quota integration verification (#…
Merge pull request #1017 from dhslove/codex/epic-987-s4-evidence
dhslove commentedon Sep 10, 2026
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을 확인했습니다.