-
Notifications
You must be signed in to change notification settings - Fork 1
[#27] Chore: 항공권 스케줄러 임시 비활성화 #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
워크스루FlightScheduler.java 파일에서 updateFlights()와 initialLoadFlights() 메서드의 변경 사항
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Fix all issues with AI Agents 🤖
In
@src/main/java/com/example/triptalk/domain/tripPlan/scheduler/FlightScheduler.java:
- Around line 110-111: The updateFlights() method in FlightScheduler currently
has @Scheduled commented out but @Transactional removed, which risks data loss
because deleteAll() runs before saveAll(); re-enable transactional boundary by
adding back the @Transactional annotation on the FlightScheduler.updateFlights()
method (or class) so that deleteAll() and saveAll() execute within a single
transaction, ensuring rollback on errors; keep @Scheduled commented if you want
the scheduler disabled but retain @Transactional to protect manual or
programmatic invocations.
🧹 Nitpick comments (1)
src/main/java/com/example/triptalk/domain/tripPlan/scheduler/FlightScheduler.java (1)
168-169: 트랜잭션 어노테이션 일관성 유지 권장
initialLoadFlights()메서드도@Transactional을 유지하는 것이 좋습니다. 현재는updateFlights()를 호출하는 역할이지만, 향후 추가 작업이 필요할 경우를 대비하고 일관성을 유지하기 위해 스케줄링 어노테이션만 주석 처리하는 것을 권장합니다.🔎 제안하는 수정 방안
// @Scheduled(initialDelay = 10000, fixedDelay = Long.MAX_VALUE) - // @Transactional + @Transactional public void initialLoadFlights() {
| // @Scheduled(cron = "0 0 3 * * MON") | ||
| // @Transactional |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
트랜잭션 경계 제거로 인한 데이터 무결성 위험
@Scheduled 어노테이션만 주석 처리하고 @Transactional은 유지해야 합니다. 현재 updateFlights() 메서드는 117번 라인에서 deleteAll()을 수행한 후 156번 라인에서 saveAll()을 수행합니다. 트랜잭션 없이 실행되면 saveAll() 중 오류 발생 시 데이터베이스가 비어있는 상태로 남게 되어 데이터 손실이 발생할 수 있습니다.
스케줄러를 비활성화하더라도 메서드가 수동으로 호출될 수 있으므로 트랜잭션 보호는 유지되어야 합니다.
🔎 제안하는 수정 방안
// @Scheduled(cron = "0 0 3 * * MON")
- // @Transactional
+ @Transactional
public void updateFlights() {📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // @Scheduled(cron = "0 0 3 * * MON") | |
| // @Transactional | |
| // @Scheduled(cron = "0 0 3 * * MON") | |
| @Transactional |
🤖 Prompt for AI Agents
In
@src/main/java/com/example/triptalk/domain/tripPlan/scheduler/FlightScheduler.java
around lines 110-111, The updateFlights() method in FlightScheduler currently
has @Scheduled commented out but @Transactional removed, which risks data loss
because deleteAll() runs before saveAll(); re-enable transactional boundary by
adding back the @Transactional annotation on the FlightScheduler.updateFlights()
method (or class) so that deleteAll() and saveAll() execute within a single
transaction, ensuring rollback on errors; keep @Scheduled commented if you want
the scheduler disabled but retain @Transactional to protect manual or
programmatic invocations.
#️⃣ 연관된 이슈
📝 작업 내용
📌 공유 사항
✅ 체크리스트
스크린샷 (선택)
💬 리뷰 요구사항 (선택)
Summary by CodeRabbit
릴리스 노트
✏️ Tip: You can customize this high-level summary in your review settings.