-
[backend.ai] #575. introduce vfolder status프로젝트/오픈소스 컨트리뷰톤 2022. 9. 14. 23:08
✏️ Issue Contents
vfolder clone, delete와 같은 storage-proxy operation 작업을 수행할 때, 사용자의 접근을 제어할 수 있도록 vfolder 상태값을 관리하려고 한다.
✏️ Ideation & Issue Solving
1) status값을 관리하기 위한 Enum값을 생성하고 이 값을 field로 가지는
VFolderStatus
table을 생성한다. 새로 생성한 테이블은 FK로 vfolder table을 참조하도록 하자.
2) manager의 vfolder api에 정의된 operation(create, clone, delete)에 vfolder status값을 관리하는 쿼리를 추가하자.
3) vfolder status에 따라 user access를 제어하기 위해서 어떤 방법을 사용할까?✏️ Pull Request Review
1) 테이블을 추가로 선언하는 것이 과연 필요할까? 라는 의문이 들어서, 이슈 작업을 시작하기 전에 멘토님께 아래와 같은 내용을 문의드렸다. 자주 일어나는 operation이 아니므로, column을 추가하는 방향이 나을 것 같다는 의견을 주셨다. 따라서 기존
VFolder
table에 status column을 추가하는 방향으로 진행하기로 결정2) 오퍼레이션 내부에 insert, update, select query문을 작성한다.
3) 처음엔 오퍼레이션 내부에서 query transaction을 적용하는 방향으로 진행하려 했었는데, 이 경우는 vfolder에 접근할 수 없는 경우(ex. vfolder delete가 작동중인데, renaming 요청이 들어온 경우)라도 함수 내부에서 예외 처리를 해주어야 했다.
아예 오퍼레이션 자체를 시작할 수 없게 하도록 lock을 걸고 싶었으므로, status를 filtering하는 wrapper method를 작성하고, operation에 decorater를 선언하는 방향으로 진행하는 것이 좋을 것 같았다.✏️ 주요 변경/개선 사항
- c54d8d
VFolderOperationStatus
Enum 생성 및 vfolder table column 추가 - 9c0ef5 96e5a7 vfolder status를 확인하는 wrapper method 생성, status check가 필요한 operation에 decorator 선언
- 96e5a7 operation 내부에 status를 관리하는 query를 추가
- f5cdd1 변경한 db scheme에 대한
albembic
migration script 생성
✏️ PR 리뷰 (완료)
- 9d2b71 함수의 의도를 더 직관적으로 나타낼 수 있도록 wrapper method와 parameter명을 수정
- 5379d1
VFolderOperationStatus
값 수정
- vfolder operation이 수행 중인 경우를 나타내는 값을
PREPARED
→PERFORMING
으로 수정 - vfolder 삭제 후의 상태를 나타내기 위해
DELETED
추가
- vfolder operation이 수행 중인 경우를 나타내는 값을
- vfolder의 현재 상태와 오퍼레이션 수행을 위해 필요로 하는 상태값을 구분하기 위해
VFolderAccessStatus
Enum 추가
- c14de5 ready-to-read 오퍼레이션에(
READABLE
)도 status filtering decorator를 추가하도록 수정 - 27151f clone 오퍼레이션에서 vfolder 상태를 수정하는 쿼리분을
_clone_bgtask()
함수 내부로 이동. background task가 완료된 직후에 쿼리를 수행할 수 있도록 수정하여 vfolder가 하나 또는 그 이상의 세션에 마운트되었을 경우, 오퍼레이션 수행을 제한하는 부분을 구현. - 348f4b DB 스키마 수정에 따른 alembic migration merge 수행
리뷰완료.
'프로젝트 > 오픈소스 컨트리뷰톤' 카테고리의 다른 글
[backend.ai] hotfix PR 뜯어보기 (2) 2022.10.06 [backend.ai] #614. ImageNotFound message typo error (0) 2022.10.03 [backend.ai] #742. Auto-generate and auto-commit news fragment from PR title (0) 2022.10.02 [backend.ai] #691. Add the commit history between releases in the release notes (1) 2022.09.14 - c54d8d