trying to understand unresponsive script waiting on UIDL call

I’m seeing my vaadin application when used in embedded mode via Vaadin-xs occasionally lock up due to an unresponsive script. This happens most frequently in Chrome 10 on OSX, but I’m able to reproduce in FF3 and Safari 5, albeit less frequently.

This is the error message that is printed by Firefox:

I put in some debug statements into XSApplicationServlet and JsonpCommunicationManager and I noticed this oddity. Normally, a UIDL request looks like this:

service: /UIDL
Calling super.service: UIDL
writeUiDLResponse
end.writeUiDLResponse
Done super, out: UIDL

What I’m seeing when it locks up is:

service: /UIDL
Calling super.service: UIDL
Done super, out: UIDL

So the calls to writeUIDLResponse in JsonpCommunicationManager never occur. Is there a reason why that method would not be called under normal usage?

Thanks.

Michael

Debugging jsonp style communication sucks, I know. This is even worse due the fact that GWT doesn’t support debugger with xs linker.

Firebug (both debugger and resource panel), pretty compiled client side and server side debugging are the hints I can provide. Some kind of remote debugger via Vaadin forum would be great. Maybe they can build it for the next version :slight_smile:

Oh… I forgot. VConsole.log() style client side logging and ?debug=q request parameter might help on the client side.

__
cheers,
matti

it’s usefull

Yes, the debug console is normally useful, but it does not display in embedded mode, and since the bug only happens in embedded mode, I was stuck resorting to System.err.println statements.

The problem is the referrer URL tracking is incorrect in XSApplicationServlet and an exception is thrown and presumably not caught, so the response is never sent back to the client, and thus the browser waits forever for the request to come back and hangs.

This is a server side error, usually for these you get the big red box of death letting you know there was an error on the server, or the inline ‘!’ icon which shows the stacktrace, neither of these happens, so I assume the exception is handled outside of the normal channels.

Hi,

This issue is fixed along with trunk and vaadin 6.5.4.

cheers,
matti