Skip to content

[Fix] Redis 장애가 구버전 사용자 전원 강제 로그아웃이 되지 않게 한다 #323

Description

@KiSeungMin

📌 배경

Redis 가 죽으면 구버전 앱 사용자가 전원 강제 로그아웃됩니다. 프론트 세션이 인증 감사에서 찾았습니다.

  • RedisSingleDataServiceImpl.getSingleData 가 예외를 잡지 않습니다.
  • 그래서 Redis 장애 때 common/auth/JwtTokenFilter.java:110-112 의 catch (Exception) 에 걸려 1007 이 나갑니다.
  • 구버전 앱은 1007 에서 갱신을 시도하지 않고 바로 토큰을 지우고 로그인 화면으로 갑니다. 게스트 사용자는 계정으로 돌아올 수 없습니다.

🤔 이번 배포로 나빠진 부분

이번 배포로 생긴 문제는 아닙니다. 다만 #300 이 같은 경로에서 사용자 단위 블랙리스트를 확인하면서 Redis 를 한 번 더 읽습니다.

✨ 작업 범위

  • 블랙리스트 조회가 실패하면 "블랙리스트 아님" 으로 보고 통과시키는 방향을 검토합니다. 장애 중에 로그아웃된 토큰이 잠시 통과할 수 있다는 것과, 전원 로그아웃 중 어느 쪽이 나은지 판단이 필요합니다.
  • 또는 필터에서 Redis 예외를 1007 이 아닌 다른 코드로 내보냅니다. 구버전이 1007 에만 반응하기 때문입니다.
  • Redis 장애를 흉내 내는 테스트를 넣습니다.

🙏 전달사항

  • 신버전 앱은 프론트에서 재시도 후 토큰을 지키도록 이미 고쳤습니다. 구버전은 서버에서만 막을 수 있습니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

fix버그, 오류 수정

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions