Skip to content
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

알림 재전송시 발생하는 오류 해결 및 로깅 개선 #696

Merged
merged 3 commits into from
Oct 23, 2024

Conversation

pricelees
Copy link
Contributor

@pricelees pricelees commented Oct 21, 2024

PR의 목적이 무엇인가요?

QA에서 확인한 알림 재전송 과정에서 발생하는 IndexOutOfBoundsException 해결 및 로깅 개선

이슈 ID는 무엇인가요?

설명

오류 해결

기존의 알림 전송 과정을 대략적으로 보면 다음과 같습니다.

  1. 메시지를 전송한다.
  2. 실패하는 응답 중 404(UNREGISTERED)에 해당되는 토큰을 제거한다.
  3. 제거되고 남은 토큰과 FCM 응답 객체를 FcmResponseHandler에 넣어서 재전송 처리를 시도한다.

이 과정에서 제거되고 남은 토큰과 FCM 응답 객체에 있는 응답의 수가 일치하지 않아 발생하는 예외를 해결했습니다.
등록되지 않은 토큰을 제거한 뒤 재시도하는게 아닌, 일단 재시도 하고 재시도 과정이 끝나면 한 번에 지우도록 수정했어요.

로깅 개선

FCM에서 예외가 발생하는 상황은 지금까지는 거의 없었던 것 같아요.
정말 운이 좋게도 지난 QA에서 알림 예외가 발생해서 로그를 천천히 확인해봤는데 에러 로그를 조금 더 친절하게 작성할 수 있겠다는 생각이 들어 수정했어요.

[기존]
알림 제목 + 실패한 토큰

[수정]
알림 제목 + 알림 내용(바디) + 실패한 토큰의 memberId와 tokenId

문자열 토큰이 길이가 꽤나 길어서 로그에서 가독성도 안좋고, 누구의 토큰인지 확인할 때 DB에 일일이 복붙해서 찾아야 하는 번거로움이 있는 것 같아 ID값을 로깅하도록 수정했습니다.

이 과정에서 DB 조회가 한번 더 들어가긴 하지만, FCM 예외는 일반적으로 잘 발생하지 않아 성능에 큰 영향은 주지 않을 것이라 판단했습니다.

질문 혹은 공유 사항 (Optional)

알림 재전송 쪽은 아마 이해하기 쉽지 않을 것이라 생각합니다.. 그래서 내용은 최대한 풀어 썼는데, 코드상에서 궁금한게 있으면 질문 남겨주세요.

@pricelees pricelees added BE 백엔드 관련 이슈입니다. 🚑 버그 fix (develop에서 파생된 문제) labels Oct 21, 2024
Copy link
Contributor

@Mingyum-Kim Mingyum-Kim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

알림 장인 상돌 👍

Copy link
Contributor

@ay-eonii ay-eonii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿!!!

@pricelees pricelees merged commit 1aa566a into develop-backend Oct 23, 2024
1 check passed
@ay-eonii ay-eonii deleted the fix/#694 branch October 24, 2024 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 관련 이슈입니다. 🚑 버그 fix (develop에서 파생된 문제)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants