Friday, November 30, 2012

Strange RPC regression in GWT 2.5

I'm not logging an issue yet because I don't have nearly enough information to attempt to document the issue. Instead, I wanted to share what I'm seeing and to see if anyone else has had a similar experience.

For some background, we have a mature GWT application and have been happily using GWT in production since around 1.5 and were experimenting with it a little before that. The code that is suddenly causing issues hasn't been touched in a while. The product is TeamPage at http://tractionsoftware.com

The issue is as follows:

* About 50% of the time when clicking and holding a hash style link and selecting "Open in New Tab" on iOS 6, part of the RPC response is not properly deserialized. It can also happen when clicking a link from an email message that opens in Safari in a new tab.

As you can imagine, we've been struggling to diagnose this. It only happens in iOS6 and only when opening in a new tab or a fresh view. We have not seen any similar issues in any other browsers.

I tried a GWT build from r11390 and it still happens. I reverted to GWT 2.4 and the problem went away.

We have an RPC service method that looks like this:

    public ViewData get(ViewRequest request) throws GwtTractionException;

The ViewData object returned looks like this:

    public final class ViewData implements ViewContent, GetProperty2 {
        private String name;
        private HashMap<String,String> properties = new HashMap<String,String>();
        private HashMap<String,ArrayList<ViewContent>> content;
    }

ViewContent is a simple marker interface for Objects that can be sent back as view content. Since ViewData implements ViewContent, we often have a recursive tree of ViewData, but a few other objects implement ViewContent as well.

    public interface ViewContent extends IsSerializable {}

* The problem is that content comes back empty, when in fact it should have data. properties and name are properly deserialized and non-empty. content is undefined.

I've inspected with wireshark and the RPC payload is identical in cases that work and fail. As I mentioned, it only fails 50% of the time. When it fails, the value of "content" in javascript is undefined and a ViewContent implementation that we expect to be there causes an UmbrellaException with TypeError of 'null' is not an object.

So my questions are as follows:

1) Is anyone else seeing strange RPC issues from iOS 6 when opening links in new tabs?

2) Does anyone have a suggestion on where I should look in GWT src to investigate the issue?

Sorry this is so vague. I'm happy to provide any more information that might be helpful.

-Andy




--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/8EJPDj-Dx8IJ.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment