🐞 버그 설명
매칭 재탐색 스케줄러가 실행될 때마다 REQUESTED 요청을 PageRequest.of(0, 100)으로 조회합니다.
무제한 탐색 정책에서는 조건에 맞는 강사를 찾지 못한 앞쪽 요청이 계속 REQUESTED 상태로 남을 수 있습니다. 다음 스케줄에서도 같은 앞의 100건을 다시 조회하므로, 101번째 이후 요청은 주기 재탐색 기회를 얻지 못할 수 있습니다.
요청 생성 직후에는 각 요청이 즉시 한 번 탐색되므로 “100명까지만 요청 가능”한 문제는 아닙니다. 최초 탐색 후 조건 변경이나 새 강사 노출을 기다리는 재탐색 단계에서 뒤쪽 요청이 굶을 수 있는 공정성 문제입니다.
🔁 재현 시나리오
- 조건에 맞는 강사가 없는 상태에서
REQUESTED 요청을 101건 이상 생성합니다.
- 모든 요청이 최초 탐색 후
REQUESTED/SEARCHING으로 남습니다.
- 101번째 요청에만 맞는 강사가 새로 노출을 시작합니다.
- 재탐색 스케줄러를 실행합니다.
- 앞의 100건만 다시 조회되고 101번째 요청은 계속
SEARCHING에 남을 수 있습니다.
✅ 기대 동작
- 대기 요청이 100건을 초과해도 모든 요청이 유한 시간 안에 다시 탐색되어야 합니다.
- 오래된 앞쪽 요청이 계속
REQUESTED여도 뒤쪽 요청이 영구적으로 굶지 않아야 합니다.
- 재탐색 과정에서 같은 요청의 그룹·제안·가격 snapshot이 중복 생성되지 않아야 합니다.
✅ To-do
조회·처리 기준
검증
✅ 완료 기준
- 100건을 초과한
REQUESTED 요청이 영구적으로 재탐색 대상에서 제외되지 않는다.
- 101건 이상 회귀 테스트가 기존 구현에서는 실패하고 수정 후 통과한다.
- 기존 단건 즉시 탐색, 요청 잠금, 제안 중복 방어 테스트가 모두 통과한다.
- WebSocket 연결 여부와 관계없이 DB/REST 기준 매칭 재탐색이 정상 진행된다.
🔗 관련 이슈
📝 비범위
- WebSocket 재접속
- 다중 인스턴스 distributed lock/lease의 최종 구현
- 매칭 후보 우선순위 정책 변경
🐞 버그 설명
매칭 재탐색 스케줄러가 실행될 때마다
REQUESTED요청을PageRequest.of(0, 100)으로 조회합니다.무제한 탐색 정책에서는 조건에 맞는 강사를 찾지 못한 앞쪽 요청이 계속
REQUESTED상태로 남을 수 있습니다. 다음 스케줄에서도 같은 앞의 100건을 다시 조회하므로, 101번째 이후 요청은 주기 재탐색 기회를 얻지 못할 수 있습니다.요청 생성 직후에는 각 요청이 즉시 한 번 탐색되므로 “100명까지만 요청 가능”한 문제는 아닙니다. 최초 탐색 후 조건 변경이나 새 강사 노출을 기다리는 재탐색 단계에서 뒤쪽 요청이 굶을 수 있는 공정성 문제입니다.
🔁 재현 시나리오
REQUESTED요청을 101건 이상 생성합니다.REQUESTED/SEARCHING으로 남습니다.SEARCHING에 남을 수 있습니다.✅ 기대 동작
REQUESTED여도 뒤쪽 요청이 영구적으로 굶지 않아야 합니다.✅ To-do
조회·처리 기준
nextSearchAt/due-order 중 MVP 공정성 기준을 결정한다.검증
REQUESTED요청 101건 이상에서 마지막 요청도 재탐색되는지 검증한다.REQUESTED여도 다음 범위가 처리되는지 검증한다.✅ 완료 기준
REQUESTED요청이 영구적으로 재탐색 대상에서 제외되지 않는다.🔗 관련 이슈
📝 비범위