Skip to content

[FIX] 스터디 타이머 메트릭 실패 시 로깅 누락 수정 #276

Description

@dlxodus02

📊 우선순위

🔵 Trivial

🐛 문제상황

study_timer 도메인 5개 서비스(Start/Pause/Resume/End/SaveStudyTimerHeartbeat)에서 메트릭 기록을 보호하는 catch (RuntimeException ignored)가 아무 로그도 남기지 않아, 메트릭 파이프라인이 지속적으로 실패해도 운영에서 전혀 감지되지 않음.

🔄 재현방법

  1. StartStudyTimerSessionService.java(및 나머지 4개 서비스) 확인
  2. finally 블록 내부:
try {
    metricRecorder.recordResult(ACTION, errorCode);
} catch (RuntimeException ignored) {
    // metric failure must not affect the business transaction
}
  1. ignored에 어떤 처리도 없음 — 메트릭 레지스트리가 죽어도 아무 흔적이 안 남음

🕵️‍♂️ 원인분석

  • 이전 PR(feature 스터디 타이머 메트릭 enum으로 변경 #263)에서 "메트릭 예외가 트랜잭션 결과를 덮어쓰면 안 된다"는 CodeRabbit 코멘트에 따라 try/catch로 격리했는데, 그때 로깅을 빠뜨림
  • 안전장치(예외 흡수)를 넣으면서 동시에 감시장치(로그)를 죽여버린 상태 — 모니터링이 침묵으로 무력화됨

🚨 검증

  • 5개 서비스 코드 직접 확인 — 전부 동일 패턴으로 로그 없음 확인됨

📋 작업 계획 (검토용, 착수 전)

  1. 5개 서비스에 @Slf4j 추가
  2. catch (RuntimeException e)로 바꾸고 log.warn("... action={}, errorCode={}", ACTION, errorCode, e) 추가
  3. 메트릭 기록 실패 시에도 정상 흐름이 유지되는지 + 로그가 남는지 테스트로 검증

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions