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

Feat/#58 #59

Merged
merged 9 commits into from
Oct 2, 2024
Merged

Feat/#58 #59

merged 9 commits into from
Oct 2, 2024

Conversation

songhaechan
Copy link
Member

#️⃣연관된 이슈

ex) #58

📝작업 내용

낙관락 적용, @retryable 설정, @recover(재시도 실패 시 예외 발생), Service 레이어 테스트코드 작성

💬리뷰 요구사항

낙관락과 통합테스트가 이번 PR에 큰 흐름입니다! 디렉토리 바꾼 여파로 설정을 조금 바꾼 부분이 있습니다.

@songhaechan songhaechan added feat 기능 추가 test 테스트 작업 labels Oct 1, 2024
@songhaechan songhaechan self-assigned this Oct 1, 2024
@songhaechan songhaechan linked an issue Oct 1, 2024 that may be closed by this pull request
Copy link
Member

@ohksj77 ohksj77 left a comment

Choose a reason for hiding this comment

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

재시도 관련 피드백 확인 부탁드립니다.

수고하셨습니다.

Comment on lines 94 to 101
@Retryable(retryFor = {ObjectOptimisticLockingFailureException.class},backoff = @Backoff(value = 300L),maxAttempts = 30, recover = "temperatureRecover")
@Transactional
public TemperatureResponse decreaseTemperature(final Long groupId, final Long requestMemberId, final Long targetMemberId) {
final Participant requestParticipant = getParticipant(groupId, requestMemberId);
final Participant targetParticipant = getParticipant(groupId, targetMemberId);
return targetParticipant.downTemperature(requestParticipant);
final Integer temperature = targetParticipant.decreaseTemperature(requestParticipant);
return new TemperatureResponse(temperature);
}
Copy link
Member

@ohksj77 ohksj77 Oct 1, 2024

Choose a reason for hiding this comment

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

재시도 횟수가 많기도 하지만, 가장 중요한 점은 재시도 간격이 일정하여

  1. 재시도 계속 발생하는 경우가 생길 수 있습니다.
  2. 어떤 시점에 재시도가 매우 많아져 부하가 엄청 많이 발생할 수 있을 것 같습니다.

1번의 경우 random 옵션을 활성화하여 비슷한 간격이어도 서로 다른 시각에 재시도할 수 있도록 설정할 수 있고,
2번의 경우 @backoff 의 multiplier 옵션을 활용하여 지수 백오프를 사용하여 해소할 수 있을 것 같습니다.

이렇게 설정하고 다시 테스트해보시면, 재시도 횟수를 줄여도 해소될 것으로 예상됩니다.

Copy link

github-actions bot commented Oct 1, 2024

📝 테스트 커버리지 리포트입니다

Overall Project 67.33% -0.46% 🍏
Files changed 83.58% 🍏

File Coverage
Roles.java 100% 🍏
FcmTokenController.java 100% 🍏
ParticipantController.java 100% 🍏
Participant.java 93.48% 🍏
Member.java 88.06% 🍏
NotificationCreator.java 75% 🍏
ParticipantService.java 72.14% -1.43% 🍏
S2GroupLocationService.java 0% -39.13%

@songhaechan songhaechan merged commit ee75cec into main Oct 2, 2024
1 check passed
Copy link

github-actions bot commented Oct 2, 2024

📝 테스트 커버리지 리포트입니다

Overall Project 67.33% -0.46% 🍏
Files changed 84.72% 🍏

File Coverage
Roles.java 100% 🍏
FcmTokenController.java 100% 🍏
ParticipantController.java 100% 🍏
Participant.java 93.48% 🍏
Member.java 88.06% 🍏
NotificationCreator.java 75% 🍏
ParticipantService.java 72.14% -1.43% 🍏
FcmTokenService.java 0% 🍏
S2GroupLocationService.java 0% -39.13%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 기능 추가 test 테스트 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

feat/Redisson 제거, 낙관락 적용, 테스트
2 participants