Vaadin multi tab support

Am using vaadin 6.8 and have over ridden getWindow() of my Application class to support multiple tabs.
I have a URIFragment listener which directs each URI to separate views.

Problem is when we open two different URIs in two different tabs, vaadin processes the requests serially between these tabs (May be because they are same session). Any one else have encountered this issue?
Upon new http request, I get the loading indicator in browser tab2, while its being processed, If I perform operation which issues another http request on browser tab1, then both shows up loading indicator. But tab1 request is actually processed after tab2 request processing is done.

Looks like AbstractCommunicationManager.doHandleUidlRequest() locks the application instance and hence requests of same session are actually processed in a serial manner. Any ways to workaround the issue?

Requests need to synchronize on the application as per design. A more fine grained locking for Vaadin 6 would be considerably more complex and probably cannot really be retrofitted on it.

If you have requests that run so long that you notice another tab being blocked by them, you should consider running them in the background (locking on the Application only when touching UI components either directly or indirectly) and using some polling or push mechanism - not only because of multi-tab use but also to keep the application on a single tab more responsive.

Thanks for the response Henri. I will fall back to threads which update the GUI asynchronously.
But wondering why would vaadin lock application, doHandleUidlRequest() already knows the window which would be updated for the given request.

Leif wrote a bit about this for Vaadin 7
here
, some of the same reasons apply.

The reasons include but are not limited to backwards compatibility and reduced complexity (otherwise would need two levels of locking, one when finding the window and the other when already know it). Also access from a background thread or from request processing of another Application instance is much simpler with Application level locking.