632550220d
1. 맵 5개를 volatile + ConcurrentHashMap으로 변경 - 비동기 읽기(isGroupPass 등) 중 HashMap 구조 변경으로 발생하던 race condition 제거 2. initAdapter/Interface/Group()에서 빌드-완성 후 원자적 교체 패턴 적용 - 신규 맵을 완전히 구성한 뒤 this.field = newMap으로 한 번에 교체 - 구→신 전환 중 불완전 상태가 외부에 노출되던 문제 제거 3. removeAdapter/Interface/Group()에 synchronized 추가 - 락 없이 맵을 수정하던 메서드와 reload 사이의 race condition 방지 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>