[FEAT] 비동기 작업 유실 완화를 위한 Graceful Shutdown 적용#97
Hidden character warning
Conversation
- Room 엔티티에 gender 컬럼 추가, 방 생성 시 방장 성별로 저장 - 방 목록 조회(FindRoomsUseCase)에서 요청자 성별과 일치하는 방만 반환 - QueryDSL 경로: room.gender.eq(gender) WHERE 조건 추가 - LATERAL 경로: AND r.gender = :gender 조건 추가 (LATERAL 실행 전 필터링) - 방 신청(ApplyRoomUseCase)에서 성별 불일치 시 GENDER_MISMATCH(ROOM016) 에러 반환 - 목록 필터링(Layer 1) + 신청 차단(Layer 2) 2중 방어 구조 - 방 생성(CreateRoomUseCase)에서 이미 방에 속한 사용자 사전 검증 추가 - 기존 DB constraint 오류 대신 ALREADY_JOINED_USER(ROOM013) 반환 - 인덱스 교체: idx_room_status_created → (room_status, gender, created_at, room_no) - 에러 코드 추가: GENDER_MISMATCH(ROOM016) - 관련 단위 테스트 전체 반영
…이블-gender-컬럼-추가-및-인덱스-확장 [FEAT] 성별 기반 방 목록 필터링 및 신청 차단
|
Caution Review failedPull request was closed or merged during review Warning Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories. Walkthrough방 검색에 사용자 성별 기반 필터링을 추가하고, 방 신청 시 성별 일치 여부를 검증하며, 우아한 종료(Graceful Shutdown) 설정을 추가하고, 애플리케이션 생명주기 이벤트에 구조화된 로깅을 도입했습니다. Changes
Sequence DiagramsequenceDiagram
participant Client as Client
participant Controller as FindRoomsController
participant UseCase as FindRoomsUseCase
participant UserService as UserService
participant RoomService as RoomService
participant Repository as RoomRepositoryImpl
Client->>Controller: loadAll(userNo, request)
Controller->>UseCase: execute(userNo, request)
UseCase->>UserService: findById(userNo)
UserService-->>UseCase: User{gender}
UseCase->>RoomService: searchByCursor(gender, request, ...)
RoomService->>Repository: findByCursor(gender, request, ...)
Repository->>Repository: queryDSL로 room.gender = gender 필터 적용
Repository-->>RoomService: List<FindRoomsResponse>
RoomService-->>UseCase: CursorPage<FindRoomsResponse>
UseCase-->>Controller: CursorPage<FindRoomsResponse>
Controller-->>Client: ResponseEntity<CursorPage>
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 주요 이유는 room 검색/생성/신청 로직에 걸쳐 여러 파일에서 일관되게 gender 파라미터를 추가했으며, 데이터베이스 스키마와 쿼리 인덱스 변경이 포함되어 있고, graceful shutdown 설정과 로깅 개선도 함께 진행되었기 때문입니다. 변경이 비교적 명확하고 테스트 커버리지도 적절히 업데이트되었습니다. Possibly related issues
Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 1 | ❌ 4❌ Failed checks (3 warnings, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 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 |
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
📌 제목
📢 요약
🔗 연관 이슈: Resolves #89
🚀 PR 유형
✅ PR 체크리스트
📜 기타
application-prod.yml에server.shutdown=graceful,spring.lifecycle.timeout-per-shutdown-phase=30s를 적용했습니다.application-prod.yml에 readiness/liveness probe를 활성화해/actuator/health/readiness,/actuator/health/liveness를 운영 헬스체크 경로로 사용할 수 있게 했습니다.Dockerfile은exec java ...형태로 수정해SIGTERM이 JVM에 직접 전달되도록 변경했습니다.docker-compose.yml의backend서비스에stop_grace_period: 45s를 추가해 앱의 30초 종료 대기 시간을 컨테이너 레벨에서 보장하도록 했습니다.prod프로필 기동으로 수행했습니다.SIGTERM전송 시 readiness가REFUSING_TRAFFIC으로 전환되고, 진행 중이던 15초 요청이200 OK로 완료된 뒤 프로세스가 종료되는 것을 확인했습니다./actuator/health/readiness를 기준으로 트래픽 드레이닝을 수행해야 합니다.Summary by CodeRabbit
Release Notes
새 기능
개선 사항