fix: 팀원 모집 마감 배치의 모집별 트랜잭션 격리 - #2394
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (6)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughChangesThe deadline close flow now uses a coordinator to find expired recruitments. The processor closes each recruitment in an independent transaction. Tests verify candidate ordering, failure isolation, rollback, and successful subsequent processing. Team recruitment deadline closing
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: 🟡 Moderate · up to The change isolates failures between recruitments, but repeatedly retrying only the first 100 eligible records can leave later expired recruitments—and their chat rooms—open beyond the deadline when early records fail persistently. Merge should wait for a progress mechanism or explicit owner acceptance of this bounded risk. Sequence Diagram(s)sequenceDiagram
participant Scheduler
participant Coordinator
participant Repository
participant CloseProcessor
Scheduler->>Coordinator: closeExpiredRecruitments()
Coordinator->>Repository: Query expired recruiting recruitments
Repository-->>Coordinator: Return recruitment page
Coordinator->>CloseProcessor: closeIfExpired(recruitmentId, today)
CloseProcessor-->>Coordinator: Complete or throw exception
Coordinator->>CloseProcessor: Process next recruitment
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Linked Issues checkExplanation The changes satisfy issue Full details: Out of Scope Changes checkExplanation All production and test changes support the linked issue. The PR adds the coordinator, isolates per-recruitment transactions, updates the scheduler dependency, and verifies rollback and continued processing without unrelated changes.
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
1d56b91 to
1f165f5
Compare
1f165f5 to
e81c2f7
Compare
🔍 개요
🚀 주요 변경 내용
REQUIRES_NEWtransaction으로 처리합니다.recruitmentId를 로그에 기록합니다.CLOSED, 대기 지원서REJECTED, 방READ_ONLY, 알림·outbox 결과를 유지합니다.💬 참고 사항
./gradlew check --no-daemon --max-workers=1결과 총 1,056 tests, failures 0, errors 0, skipped 3입니다.✅ Checklist (완료 조건)
Summary by CodeRabbit
Bug Fixes
Tests