본문 바로가기

Android/기타

[Android] Retrofit2 중복 콜 문제

반응형

기존의 Volley를 Retrofit2로 교체하고 나서 간혹 API들이 두 번 혹은 세 번까지도 중복 콜이 발생한 경우가 서버 쪽에서 확인되었다.


원인은 바로 OkHttpClient의 retryOnConnectionFailure에 있었다.

 

이 옵션은 기본값이 true로 되어있는데 이 옵션이 활성화되어 있다면 OkHttpClient가 네트워크 상황이 불안정할 때 Retry를 시도하게 된다.

 

근데 문제는 Retrofit2에서 API 호출을 한 번만 했음에도 불구하고 그 안에 세팅해준 OkHttpClient 때문에 클라이언트 개발자도 모르게 자동으로 여러 번 API를 동시에 생성할 수 있다는 것이었다.(본인도 서버 개발자가 알려줘서 알게 됨)

 

OkHttpClient의 버그는 아니고 OkHttpClient의 기본값으로 쓰면서 Retrofit2와 같이 쓰면 생기는 문제인 것 같다.

 

해결은 이 값을 false로 주면 된다.

 

참고 : https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace

반응형