Skip to content

fix: ReactiveException으로 감싸진 InterruptedException 발생 시 인터럽트 플래그 복원 및 로그 레벨 WARN으로 변경#44

Draft
Jeongho0805 wants to merge 1 commit into
stagefrom
fix/PRACTICKET-5Z-profanity-interrupt-handling
Draft

fix: ReactiveException으로 감싸진 InterruptedException 발생 시 인터럽트 플래그 복원 및 로그 레벨 WARN으로 변경#44
Jeongho0805 wants to merge 1 commit into
stagefrom
fix/PRACTICKET-5Z-profanity-interrupt-handling

Conversation

@Jeongho0805

Copy link
Copy Markdown
Owner

변경 사항

  • ProfanityValidator.validateProfanityText의 catch 블록에서 ReactiveException의 원인이 InterruptedException인 경우를 별도 처리
  • 인터럽트 발생 시 Thread.currentThread().interrupt()로 플래그 복원
  • 스레드 인터럽트는 예상 가능한 상황(요청 취소 등)이므로 로그 레벨을 ERROR에서 WARN으로 낮춰 Sentry 오탐 방지

배경

ProfanityValidator에서 WebClient Reactive Mono.block()을 호출 중 요청 스레드가 인터럽트되면, Reactor가 Exceptions$ReactiveException으로 InterruptedException을 감싸 던진다. 기존 catch 블록은 이를 잡아 log.error()로 기록했지만 인터럽트 플래그를 복원하지 않고 Sentry가 ERROR 로그를 오류로 수집하는 문제가 있었다. Sentry 이슈 PRACTICKET-5Z (https://practicket.sentry.io/issues/7586704491/)에서 POST /api/chat 호출 중 Exceptions$ReactiveException: java.lang.InterruptedException이 반복 발생함이 확인되었다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant