[MIP-582] 의존성 페이지 에서 DRBD 볼륨 까지 삭제시 exception 발생
Subject
의존성 페이지 에서 DRBD 볼륨 까지 삭제시 exception 발생
APPLIES TO:
MCCS version: 3.6
OS: Linux
APPs:
Disk Type: mirror
SYMPTOMS
drbd리소스 2개 이상 구성후 해당 볼륨까지 MCCS의 의존성 페이지에서 삭제 했을떄 발생.
CAUSE
1. 리소스 삭제시 setParent(null)을 이용 삭제된 부모에의 참조를 끊는다( 동작은 바름)
2. 콘솔의 treeview에 표시된 객체들이 drbd볼륨 삭제시 계속 화면을 리프레쉬하는데, 이와중에 삭제된 모델이 전달될경우 ,삭제이전 객체로 표현되는 모델들의참조가 null이기 때문에 getGroup()에서 null pointer exception발생.
3. MCCS는 기본적으로 Queue를 사용해서 명령의 실행 순서를 보장하는 데 DK 및 DRBD 리소스의 경우네는 이벤트 드리븐 방식으로 변경되는 모든 값에 대하여 값을 콘솔에 전달함.
4. remoteSetVal()을 사용하는 경우 해당 리모트 노드에서도 변경 값을 콘솔에 전달함.
5.콘솔을 통해 리소스 삭제시 현재 열린 모든 editor 페이지들을 닫고, 정해진 순서에 따라 트리뷰에 선택된 리소스의 edit페이지를 active로써표현하는데, 타이밍에 따라 예전 모델을 사용하는 경우가 있음. (edit페이지, 액션, 콘텍스트 메뉴에 모두 영향)
6. 위 1,2,3,4 가 평상시에는 크게 문제되지 않고 자주 발생하지 않으나 DRBD 볼륨 삭제시 drbd볼륨 이벤트 리스너에서 전달되는 이벤트들에 의해 화면갱신중, 참조가 끊어진 객체가 전달되는것으로보임.
SOLUTION
1. 콘솔의 각페이지마다 자신을 refresh 해도 되는 페이지인지(삭제된 리소스 객체를 가진 페이지인 확인 후 표시)
2. 미러 볼륨 리스너에서 계속 해서 변경되던 변경값들에 대해서 agent를 통해 확인후(리소스 비활성화등....의 경우) 구분 해서 처리 하도록 지정.
3. 2)번과정을 setREmoteval을 통해 원격노드에서 넘어오는 값들도 처리 하도록 수정.
이이슈에서는 1번만 수정.
2,3,번은 DK 미러 리소스와 연관되므로
Fixed 3.6.0