Quantcast

AJAX: Error occurred in poll. HTTP result: 200, status: parsererror

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

AJAX: Error occurred in poll. HTTP result: 200, status: parsererror

jule
Hi,

I see the following log message if a poll times out and an empty response is received:

Error occurred in poll. HTTP result: 200, status: parsererror -----> amq_jquery_adapter.js:94

Investigating this with the JS debugging tools shows the brokers response:
xhr.responseText: "<ajax-response> </ajax-response> "
xhr.responseXML: null

The log entry itself would not be a problem, but the default behaviour of the amq.js is: It will wait for 5 seconds until it does the next poll. This is perfectly fine in case of server-side congestion issues but it will lead to a client not receiving messages for 5 seconds after each poll.

I overcame this issue by setting the 5 seconds error timeout to 0 seconds but that can´t be the solution: If the broker or the connection goes down, this configuration will lead to a client trying to poll as fast as it can (you´ll have thousands of tries within seconds).

Is this a known issue? Does anybody see the same?

Best regards
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: AJAX: Error occurred in poll. HTTP result: 200, status: parsererror

Alex Dean-2

On Sep 30, 2010, at 4:53 PM, jule wrote:

>
> Hi,
>
> I see the following log message if a poll times out and an empty response is
> received:
>
> Error occurred in poll. HTTP result: 200, status: parsererror ----->
> amq_jquery_adapter.js:94
>
> Investigating this with the JS debugging tools shows the brokers response:
> xhr.responseText: "<ajax-response> </ajax-response> "
> xhr.responseXML: null
>
> The log entry itself would not be a problem, but the default behaviour of
> the amq.js is: It will wait for 5 seconds until it does the next poll. This
> is perfectly fine in case of server-side congestion issues but it will lead
> to a client not receiving messages for 5 seconds after each poll.
>
> I overcame this issue by setting the 5 seconds error timeout to 0 seconds
> but that can´t be the solution: If the broker or the connection goes down,
> this configuration will lead to a client trying to poll as fast as it can
> (you´ll have thousands of tries within seconds).
>
> Is this a known issue? Does anybody see the same?
>

The current ajax code doesn't set a Content-Type header when the response is empty.  The client gets a Content-Type header of 'text/plain', which causes jQuery to not populate response.responseXML.  So even though XML is being returned, jquery doesn't recognize it as such.

The fix for this (which is just to move 2 lines of code, so Content-Type is always set to 'text/xml') is in https://issues.apache.org/activemq/browse/AMQ-2948.

alex
Loading...