-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
회원 탈퇴 처리 시 데이터베이스에서 회원을 먼저 삭제하고 OAuth 연동을 해제하고 있습니다. 이 순서는 몇 가지 잠재적인 문제를 야기할 수 있습니다.
- 긴 트랜잭션:
revoke는 외부 네트워크 호출을 포함하므로 시간이 오래 걸릴 수 있습니다. 이 시간 동안 데이터베이스 트랜잭션이 열려있게 되어 커넥션 풀 고갈이나 다른 트랜잭션과의 충돌을 유발할 수 있습니다. - 불일치 상태:
memberRepository.delete(member)가 커밋된 후,revoke호출 전에 애플리케이션이 비정상 종료되면, 우리 시스템에서는 회원이 삭제되었지만 OAuth 연동은 해제되지 않은 불일치 상태가 발생합니다.
OAuth 연동 해제를 먼저 시도하고, 성공했을 때 데이터베이스에서 회원을 삭제하는 순서로 변경하는 것을 권장합니다. 이렇게 하면 외부 호출로 인한 트랜잭션 대기 시간을 줄이고, 실패 시 상태를 더 일관되게 관리할 수 있습니다.
// oauth 삭제 실패했을 경우
if (!oAuthClientManager.revoke(member)) {
log.info("[MemberDeleteService.delete] failed to revoke OAuth client for member - memberId: {}", member.getId());
throw new UnRegisterMemberException("oauth 연동 해제중 에러 발생했습니다. 잠시 후 다시 시도해주세요");
}
memberRepository.delete(member);
Originally posted by @gemini-code-assist[bot] in #258 (comment)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels