Skip to content

회원 탈퇴 처리 시 동시성 문제 및 검증 누락 개선 #141

@coderabbitai

Description

@coderabbitai

문제 설명

회원 탈퇴 처리( 메서드)에서 다음 두 가지 문제가 확인되었습니다:

1. Race Condition (동시성 문제)

  • withdraw() 메서드가 진행 중인 예약/상담을 확인한 후 deletedAt을 설정하기까지의 시간 동안, 동시 요청으로 새로운 예약/상담이 생성될 수 있습니다.
  • 현재 User 엔티티에 대한 pessimistic lock을 사용하지 않아 발생하는 문제입니다.

2. 검증 누락

  • 예약/상담 생성 시 탈퇴한 사용자(isWithdrawn() 또는 deletedAt 확인)에 대한 검증이 누락되어 있습니다.
  • createTempReservation() 등의 메서드에서 일반 회원/전문가를 조회할 때 탈퇴 여부를 확인하지 않습니다.

개선 방안

  1. withdraw() 메서드에서 User 조회 시 pessimistic write lock 적용
  2. 예약/상담 생성 경로(createTempReservation() 등)에서 isWithdrawn() 검증 추가

관련 링크

영향 범위

  • src/main/java/com/ceos/menual/domain/user/service/UserService.java - withdraw() 메서드
  • src/main/java/com/ceos/menual/domain/reservation/service/ReservationService.java - createTempReservation() 및 기타 예약 생성 메서드
  • src/main/java/com/ceos/menual/domain/user/repository/UserRepository.java - pessimistic lock을 위한 쿼리 메서드 추가 필요 가능성

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions