Repository navigation
fix: #253 Outbox 조건부 Bean 등록 순서 제거 - #254
Conversation
- Firebase 활성화 속성을 기준으로 Outbox 전송 빈을 등록해 구성 처리 순서 의존성을 제거 - Firebase와 Outbox 폴링이 모두 활성화된 경우에만 스케줄러를 등록 - 테스트 프로필의 Firebase Mock 구성을 분리하고 조건 조합 회귀 테스트를 추가 - 검증: gradlew.bat check --quiet --rerun-tasks 통과
- 테스트 스케줄러 자동 실행이 DB 검증을 비결정적으로 만드는 이유를 설명 - FirebaseMessaging Mock과 OutboxPublisher 수동 호출 방식을 명시 - 검증: staged diff 및 whitespace 검사 통과
- FirebaseConfig의 test 프로필 제외 조건을 제거해 enabled 속성만 등록 기준으로 유지 - 실제 Firebase와 Outbox 운영 설정을 함께 로드하는 순서 회귀 테스트로 보강 - OutboxPublisher 통합 테스트는 Firebase를 켜지 않고 테스트 전용 Outbox 빈과 Mock으로 격리 - 검증: gradlew.bat check --quiet --rerun-tasks 통과
- FirebaseConfig가 test 프로필이 아닌 enabled 속성으로 비활성화됨을 명시 - FirebaseMessaging Mock의 선택 및 동작 설정 방식을 현재 테스트 구조에 맞게 수정 - 검증: gradlew.bat check --quiet --rerun-tasks 통과
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
PHJ2000
left a comment
There was a problem hiding this comment.
확인했습니다. 별다른 문제가 없어 머지하겠습니다.
🔗 Jira Issue
🔒 Close Issue
🧩 한눈에 요약
어떤 버그였나?
PENDING상태로 누적됐다.왜 발생했나? (Root Cause)
@Configuration에 연쇄 적용한@ConditionalOnBean이 관련 Bean definition 처리 전에 평가되면 설정 전체가 제외된다.FirebaseMessaging이 생성돼도 이미 제외된 Outbox 설정은 다시 평가되지 않는다.어떻게 고쳤나?
OutboxFirebaseConfig등록 조건을app.firebase.enabled=true속성 기준으로 변경했다.OutboxSchedulingConfig는 Firebase와 polling 활성화 속성이 모두true일 때 등록되도록 변경했다.FirebaseConfig,OutboxFirebaseConfig,OutboxSchedulingConfig를 함께 로드하는 순서 회귀 테스트를 추가했다.🧯 재현 & 검증
재현 방법
app.firebase.enabled=true,app.outbox.polling.enabled=true로 애플리케이션을 기동한다.OutboxPublisher와 스케줄러가 제외될 수 있다.PENDING으로 남는다.재발 방지
✅ Acceptance Criteria (AC)
app.firebase.enabled=true에서 Firebase 및 Outbox 관련 빈이 설정 처리 순서와 관계없이 등록된다.app.firebase.enabled=false에서 Outbox 전송 빈이 제외되고 컨텍스트가 정상 기동한다.app.outbox.polling.enabled=false에서 Outbox 스케줄러만 제외된다.tasks.scheduled.execution에서scheduleOutboxPolling실행을 확인한다.outbox processspan 생성을 확인한다.🧪 테스트 / 검증
로컬
gradlew.bat check --quiet --rerun-tasksOutboxFirebaseConditionContextTest4개,OutboxPublisherIntegrationTest11개 PASSCI
Smoke / 수동 검증
테스트 공백
🧭 영향 범위
💥 Breaking / Compatibility
🚀 배포/릴리즈
Feature Flag
app.firebase.enabled,app.outbox.polling.enabled사용모니터링/알림
tasks.scheduled.execution, Outbox 상태별 건수, Tempooutbox processOutbox 폴링,Outbox 이벤트 발송리스크
롤백
💬 리뷰 가이드
OutboxFirebaseConfig,OutboxSchedulingConfig,OutboxFirebaseConditionContextTest