Simple&Natural
에뮬레이터에서 네트워크 작업 중 발생하는 Connection 오류 관련 본문
30~40개 정도의 URL에 동시에 요청을 보내서 값을 받아와 파싱해야 하는 작업이 있었다.
루프를 돌려 반복해서 요청을 보내보니 적게는 1~2개에서 많게는 10개 이상까지 계속해서 다양한 exception이 발생하였다.
원인을 찾기 위해 우선 몇 가지 케이스를 나누고 검증을 시작했다.
1. 요청 단계에서 문제가 생긴 경우
2. 응답이 문제가 있는 경우
3. 정상적인 요청과 응답이 이루어진 이후에 문제가 발생하는 경우
우선 간단히 로그를 찍어보니 모든 요청들이 정상적인 응답코드를 반환하고 있었으므로 1, 2번 케이스는 제외하였다.
그렇다면 남은 가능성은 정상적인 응답을 받아오는데도 불구하고 내 쪽에서 제대로 된 처리를 하지 못하는 것이다.
마찬가지로 로그를 통해 어떤 예외들이 찍히고 있는지 살펴보았다.
위와 같은 에러들이 무작위로 출력되고 있었는데
딱히 규칙성도 보이지 않았고 URL에 특정되지도 않았으므로 무언가 다른 접근이 필요했다.
우선 프로토콜 관련 부분들이 많이 보였기 때문에 무언가 패킷을 주고받는 단계에서 생기는 문제가 아닐까 추측해보며
관련 키워드들로 구글링을 하던 도중 커넥션 관련 답변을 보게 되었다.
대충 요약하자면 커넥션을 제대로 열고 닫지 않아 서버측에서 문제가 발생했다는 것.
하지만 알아본 바로는 커넥션의 경우 닫지 않았을 때 생기는 문제의 대다수는 리소스의 낭비와 같은 측면이며
정상적인 응답코드를 받은 이후 데이터를 제대로 파싱하지 못하는 문제는 아니다.
여러 HTTP, TCP 관련 전문서적의 커넥션 관련 파트에서도 해당 이슈에 대한 언급은 찾지 못했다.
실제로 close를 했음에도 문제는 전혀 해결이 되지 않는 상황.
여러 에뮬레이터로 테스트를 해봐도 결과가 마찬가지던 와중에 한 스오플에 이슈를 발견,
실기기에서는 이 문제가 발생하지 않는다는 정보를 보고 바로 실제 기기로 테스트를 하였더니 정말 문제가 일어나지 않았다.
서버측에서는 별다른 문제가 없는 걸로 보아 에뮬레이터의 프록시 설정과 관련된 문제로 추정된다.
참고자료)
'안드로이드(Android) > 이슈 및 해결' 카테고리의 다른 글
META-INF 관련 문제가 발생하는 경우 (0) | 2020.09.15 |
---|---|
안드로이드에서 웹문서 출력시 글자가 깨지는 경우 (0) | 2020.04.08 |
안드로이드 Legacy Code 로 인해 빌드가 되지 않는 경우 (0) | 2020.03.05 |
안드로이드 프로젝트 빌드 시 Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project 오류가 발생하는 경우 (0) | 2020.02.22 |
Android의 Background Service 제한에 따른 이슈 (0) | 2020.01.20 |