Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR의 목적이 무엇인가요?
QA에서 확인한 알림 재전송 과정에서 발생하는 IndexOutOfBoundsException 해결 및 로깅 개선
이슈 ID는 무엇인가요?
설명
오류 해결
기존의 알림 전송 과정을 대략적으로 보면 다음과 같습니다.
이 과정에서 제거되고 남은 토큰과 FCM 응답 객체에 있는 응답의 수가 일치하지 않아 발생하는 예외를 해결했습니다.
등록되지 않은 토큰을 제거한 뒤 재시도하는게 아닌, 일단 재시도 하고 재시도 과정이 끝나면 한 번에 지우도록 수정했어요.
로깅 개선
FCM에서 예외가 발생하는 상황은 지금까지는 거의 없었던 것 같아요.
정말 운이 좋게도 지난 QA에서 알림 예외가 발생해서 로그를 천천히 확인해봤는데 에러 로그를 조금 더 친절하게 작성할 수 있겠다는 생각이 들어 수정했어요.
[기존]
알림 제목 + 실패한 토큰
[수정]
알림 제목 + 알림 내용(바디) + 실패한 토큰의 memberId와 tokenId
문자열 토큰이 길이가 꽤나 길어서 로그에서 가독성도 안좋고, 누구의 토큰인지 확인할 때 DB에 일일이 복붙해서 찾아야 하는 번거로움이 있는 것 같아 ID값을 로깅하도록 수정했습니다.
이 과정에서 DB 조회가 한번 더 들어가긴 하지만, FCM 예외는 일반적으로 잘 발생하지 않아 성능에 큰 영향은 주지 않을 것이라 판단했습니다.
질문 혹은 공유 사항 (Optional)
알림 재전송 쪽은 아마 이해하기 쉽지 않을 것이라 생각합니다.. 그래서 내용은 최대한 풀어 썼는데, 코드상에서 궁금한게 있으면 질문 남겨주세요.