diary       blog       guest

URLLoader에서 발생되는 원인을 알수 없는 IOError #2032 문제

http://www.action-scripter.com/blog/trackback/1353
IOErrorEvent는 URLLoader.load() 메서드로 데이터를 호출할 때 몇가지 원인으로 발생하는 이벤트입니다. 그 중에서도 #2032 스트리밍 오류는 대부분 Request 경로가 잘못되었거나 해당 경로에 파일이 없는 경우, 서버에서 정상적으로 데이터를 반환하지 못할 때 발생하는 녀석으로 알고 있습니다. 일단 #2032 문제가 발생한다면 브라우저에 해당 경로를 입력해서 정상적으로 데이터가 있는지 여부를 먼저 확인하는데요. 혹시 이런 경우를 경험해 보셨는지요?

1. AIR Application(v2.0)입니다.
2. AIR Application을 실행하고 1시간 동안 해당 API의 응답은 모두 정상입니다.
3. 1시간이 지난 후 해당 API를 호출하면 IOErrorEvent가 발생합니다. (#2032)
4. 해당 API를 브라우저(IE, 파폭, 크롬)에서 호출하면 정상적으로 데이터(XML)를 가져옵니다.
5. AIR Application에서 해당 API의 파라미터를 변경 데이터량이 작은 결과를 호출하면 정상적으로 로드합니다.
6. POST/GET 방식 모두 동일합니다. (1시간이 지나면 데이터 량이 많은 API 응답은 무조건 IOError로 떨어집니다.)
7. 데이터량의 많은 경우 400KB 정도의 XML입니다.
8. 신기합니다. 1시간 동안은 얼마든지 호출해도 XML이 잘 로드됩니다.
9. 1시간 후에는 귀신같이 로드가 안됩니다. #2032
10. API 전체에 문제가 있는것도 아니고 해당 API. 그것도 데이터 량이 많은 API만 이상한 상황.
11. Window, MAC 모두 동일합니다.
12. AIR Application 내부에 Timer라든지 시간과 관련된 이벤트는 없습니다.

과연 이 문제가 AIR Application의 문제일까요? 아니면 Server쪽 문제일까요?
URLLoader 클래스가 용량이 큰 파일을 로드할 때 오류가 있다고는 들었지만 그건 FLV 파일 같은 정말 용량이 큰 파일들로 알고 있는데.. 1시간 동안 로드할 수 있는 용량이 제한되어있는것도 아니고.. 이상한건 해당 API를 브라우저에서 호출하면 항상 정상적인 값을 로드하는데.. 왜? AIR Application에서만 이런 문제가 있는 걸까요? AIR Application을 실행하고 1시간 동안 호출했던 동일한 주소의 API. 1시간 후부터는 로드가 안되는 API. 물론 AIR Application을 다시 실행하면 1시간동안은 잘 됩니다.

이런 경험 정말 오래간만에 당해(?)봅니다.


2011/06/19 00:40 2011/06/19 00:40

Comments List

  1. Han Sanghun 2011/06/21 20:24 # M/D Reply Permalink

    아주 지랄같은 버그에 직면했군... --;
    테스트를 위해 한 시간을 기다려야 하다니...

    1. 땡굴이 2011/06/24 09:28 # M/D Permalink

      딱 알맞은 표현이네.. 크크. 일단 지금까지 상황으로는 플래시 문제는 아닌 것 같은 상황..

   1    
ABOUT  |  WORKS  |  @seonggyu
COPYRIGHT ⓒ 2000 - 2010. ACTION-SCRIPTER.COM. ALL RIGHTS RESEVED.