배경
PR #366의 실제 PostgreSQL·Redis 통합 시험에서 ADMIN 역할 회수 API가 완료되어도 기존 WebSocket 세션은 다음 주기 재검증 전까지 /topic/dashboard의 새 구독과 메시지 수신이 가능했습니다. CONNECT 시점의 역할 스냅샷이 이후 권한 판단에 사용되기 때문입니다.
목표
- 역할 회수 API가 성공 응답을 완료한 뒤 시작한 새 /topic/dashboard SUBSCRIBE를 거부합니다.
- 이미 구독 중인 세션에도 회수 완료 뒤 새로 발행한 대시보드 메시지를 전달하지 않습니다.
- 최신 권한을 확인할 수 없을 때 캐시된 ADMIN 권한으로 통과시키지 않습니다.
- 정상 ADMIN 및 일반 RAG WebSocket 경로를 회귀 검증합니다.
검증
- 결정적 로컬 테스트와 실제 PostgreSQL·Redis 통합 테스트에서 회수 전/후 구독 및 메시지 수신을 비교합니다.
- 권한 확인이 primary DB에 도달하는지 확인하고, 장애 시 fail-closed 동작을 시험합니다.
- 주기 재검증을 강제로 호출하지 않고도 차단되는지 확인합니다.
- 성능 비용과 이미 권한 검사 중이던 in-flight 메시지의 한계를 문서화합니다.
범위
WebSocket 관리자 대시보드 접근의 회수 즉시성만 다룹니다. OpenProxy·Patroni 장애 주입과 전체 HA 부하 시험은 별도 작업입니다.
배경
PR #366의 실제 PostgreSQL·Redis 통합 시험에서 ADMIN 역할 회수 API가 완료되어도 기존 WebSocket 세션은 다음 주기 재검증 전까지 /topic/dashboard의 새 구독과 메시지 수신이 가능했습니다. CONNECT 시점의 역할 스냅샷이 이후 권한 판단에 사용되기 때문입니다.
목표
검증
범위
WebSocket 관리자 대시보드 접근의 회수 즉시성만 다룹니다. OpenProxy·Patroni 장애 주입과 전체 HA 부하 시험은 별도 작업입니다.