Skip to content

fix: 보정 스케줄러의 미처리 요청 감지 범위 확장#226

Merged
Ji-minhyeok merged 14 commits into
developfrom
refactor/#221/decouple-participant-count-update
Apr 27, 2026
Merged

fix: 보정 스케줄러의 미처리 요청 감지 범위 확장#226
Ji-minhyeok merged 14 commits into
developfrom
refactor/#221/decouple-participant-count-update

Conversation

@Ji-minhyeok
Copy link
Copy Markdown
Collaborator

🚀 작업 개요

보정 스케줄러가 “MQ가 비었다”는 신호만으로 재고 보정을 수행하던 기존 구조에서 Waiting Room(선점 완료, 미처리 요청) 잔여 여부까지 포함하여 전체 파이프라인의 미처리 요청을 더 보수적으로 감지하도록 개선했습니다.
또한 MQ Stream 상태 확인이 실패한 경우에도 보정을 진행하지 않도록 fail-closed로 변경하여 외부 상태 확인 실패 시 재고를 다시 열지 않도록 하였습니다.

🛠️ 작업 내용

Waiting Room 기반 미처리 요청 감지 추가 (Core Redis)

  • 보정 스케줄러가 DIRTY_SET_KEY(lesson:apply:active-lessons)에 등록된 레슨들을 기준으로 각 lesson:apply:waiting-room:{lessonId} SortedSet의 잔여 수를 확인
  • Waiting Room에 선점된 요청이 남아있는 경우 MQ Stream이 비어 있더라도 보정을 연기하여 DB 반영 전 재고가 초과 복구되는 케이스를 방지

MQ Stream Lag 체크 fail-closed 적용 (MQ Redis)

  • hasStreamLag()에서 Stream/group 조회가 실패한 경우 기존에는 “미처리 없음”으로 간주될 수 있었으나 변경 후에는 상태 확인 실패 시 보정을 연기하도록 처리
  • MQ 상태를 확실히 판단할 수 없는 상황에서의 재고 overwrite를 보수적으로 차단

✅ PR 유형

  • 버그 수정
  • 성능 개선
  • 새로운 기능 추가
  • 코드 리팩토링
  • 파일 혹은 폴더명 수정
  • 문서 수정
  • 설정 변경

✅ Check List

  • 코드가 정상적으로 컴파일되나요?
  • 테스트 코드를 통과했나요?
  • merge할 브랜치의 위치를 확인했나요?
  • Label을 지정했나요?

🔗 관련 이슈

💬 기타 참고 사항

Ji-minhyeok and others added 14 commits April 23, 2026 17:04
…uple-participant-count-update

# Conflicts:
#	src/main/java/com/threestar/trainus/domain/lesson/issue/LessonStockReconciliationScheduler.java
…nt-count-update' into refactor/#221/decouple-participant-count-update

# Conflicts:
#	src/main/java/com/threestar/trainus/domain/lesson/issue/LessonApplyConsumer.java
@Ji-minhyeok Ji-minhyeok self-assigned this Apr 26, 2026
@Ji-minhyeok Ji-minhyeok added the bug Something isn't working label Apr 26, 2026
@Ji-minhyeok Ji-minhyeok merged commit 8ac0a3d into develop Apr 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant