Closed brido4125 closed 2 weeks ago
지난번에도 비슷한 PR이 있지 않았나요?
@uhm0311
아래 PR이긴 한데 현재 구현이 locator에 영향을 주지 않아 더 간결하다고 생각됩니다.
https://github.com/naver/arcus-java-client/pull/769 (delay된 이유가 locator에 영향을 많이 주는 구현이라 delay 시켰었네요) 본 PR 머지되면 위에도 close 하겠습니다
저는 CopyOnWriteArrayList를 사용하는 것보단 과거 PR처럼 Replace 방식을 사용하는 것이 더 나아 보입니다.
close하고 이미 생성된 PR의 replace 방식을 사용하겠습니다.
🔗 Related Issue
N / A
⌨️ What I did
brocast 연산 호출 시 locator의 getAllNodes가 호출된다. brocast의 getAllNodes()와 캐시 리스트 update가 함께 발생하면 하나의 ArrayList에 대해 read / write가 동시에 발생하여 문제가 발생한다.
이를 방지하기 위해 allNodes 인스턴스의 데이터 타입을 CopyOnWriteArrayList로 변경하였다.