Skip to content

[Fix] 동아리 구독 기능의 동시성 경쟁 상태 개선 #351

@coderabbitai

Description

@coderabbitai

문제 설명

동아리 구독/구독 취소 기능에서 구독 상태를 확인한 후 저장/삭제하는 패턴이 동시성 경쟁 상태(race condition)를 발생시킬 수 있습니다.

발생 위치

  • 파일: src/main/java/com/kustacks/kuring/club/application/service/ClubCommandService.java
  • 메서드: addSubscription()removeSubscription()
  • 라인: 42-47, 57-61

현재 문제점

existsSubscription() 체크와 save()/delete() 작업이 원자적으로 보장되지 않아 다음과 같은 문제가 발생할 수 있습니다:

  1. 구독 추가 시: 동시에 여러 요청이 들어올 경우, 모두 존재하지 않는다고 판단하여 중복 저장이 시도될 수 있습니다.
  2. 구독 취소 시: 동시에 여러 삭제 요청이 들어올 경우, 모두 존재한다고 판단하여 의도와 다른 결과가 발생할 수 있습니다.

개선 방향 고려사항

낙관적 처리(optimistic) 방식을 포함한 다양한 동시성 제어 방안에 대한 검토가 필요합니다.

참고

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions