Action not sent to server - debugging?

Folks;

not really sure where to start so I thought I might be asking here: In one of our Vaadin applications, we encounter a somewhat strange error: In case of one of our dialog windows (modal dialogs essentially featuring a “cancel” and a “finish” button), some users will experience that upon clicking “finish”, the application “seems” to do something but the dialog won’t go away (unless they either close the browser or in some cases the Vaadin application seems to end in a “Communication Problem” error message).

We tried quite something to track down whatever happens here on the server side but indeed it seems that clicking the “finish” button in these cases never seems to trigger any server-sided action at all.

Strange. I’m not really sure where to look next. The application builds on top of Vaadin 6.5, runs inside a recent Jetty container and is exposed to the web using apache2 + mod_proxy. The behaviour outlined above seems to happen pretty often lately but doesn’t show any particular pattern, it seems to affect all major browsers and a load of different users.

Does that make sense to anyone? Any ideas where to start debugging now? First off, I wonder whether this actually is an issue in client-sided (JavaScript) code or some more low-level issue - firewall, proxy limitations, …?

Any hints greatly appreciated!
Thanks and best regards,
Kristian

Sounds like an issue in the communication, might be related to your firewall and/or proxy. Are you able to reproduce the issue somehow (maybe not reliably every time, but within a decent timeframe)? Use your browser’s developer tools to see what kind of HTTP requests are being sent to the server. Inspect your apache’s logs to see, if the request is received there. Inspect Jetty’s logs to see, if the request is received there.

Quick google search also reveals that there is plenty of discussion around Vaadin + mod_proxy, some seem to use it successfully, some have had problems. Try seeing if anything matches your setup / configurations.

Hi Kim;

and first, thanks a bunch for your feedback on that. Well yes, actually Vaadin and mod_proxy, also in our combination, works pretty well. I spent a while now debugging this issue in Chrome and Firefox, behaviour’s is the same on both browsers and can be reproduced with a set of data we have at hand.

What happens is: Clicking the “finish” button in the dialog window, I see a request popping up in the Firebug (or Chrome) Network console. However, the request doesn’t appear even in our reverse proxy log file. Needless to say it doesn’t reach Jetty or the Vaadin application, and of course there also is no response. In this situation, the only way to get the application working is to force-close the browser as even trying to close the browser tab ends up in another request that is not sent out. Content of the request seems to be pretty straightforward something like

b4ef7788-0bfb-4b46-ad4d-4cf9073a8cb61,1065,469,false,false,false,false,1,59,5PID796mousedetailsstruePID796stateb Surprisingly, this happens exactly in this one action / dialog, the application works flawlessly the rest of the time, and even in this dialog in some way it seems to be affected by the data involved.

Looking at what we tried now:

  • Browser or browser configuration seem to drop out as potential cause of this error as it happens in different (all) browsers on hosts in which this application works perfectly well otherwise except for this situation. Same goes for firewall configuration in my opinion; we even managed to see this behaviour locally and in the same subnet with the server - or even directly connecting to the server, leaving out the reverse proxy.
  • Proxy or Jetty configuration doesn’t seem to be a problem either as the request doesn’t even reach Jetty.
  • Server-sided load doesn’t seem a problem either; we tried this in a situation with overally low system load, and our users reports do not relate to times of “high” load on our machines. My first thought was that the reverse proxy might be too much under load to accept incoming requests which doesn’t seem the case however.

So it looks like there’s something wrong at least in our code. Is there any meaningful way to do client-side debugging in a running Vaadin application? As I have seen the JavaScript code is not really a good help when trying to set breakpoints and see what goes on…

Thanks again and all the best,
Kristian

You can debug client-side code using
superdevmode
.

Are there any JavaScript exceptions that occur?
When the problem occurs, is the problem resolved if you simply hit refresh in your browser? If not, are you using @PreserveOnRefresh?

One rare situation came to mind, which I’ve seen once to cause weird problems, is the user’s anti-virus software. Try disabling anti-virus and reproducing the problem (be sure you are not in a vulnerable network while testing this).

Thanks for your hints. We’ll try going into things using superdevmode then. By the way I have seen (in the Eclipse Vaadin plugin) the option to disable client side code obfuscation; does that work / is that possible too while building project and widget set using maven?

As far as JavaScript is concerned, no, there aren’t any exceptions or messages recorded in these situation. Likewise, refreshing the browser window does not (seem to) work. Anti-virus also is out here in my opinion; though we use Sophos for web content filtering, it should be disabled or set to very weak for local sites so it shouldn’t fail while internally connecting to our servers.

Anyway, we’ll see what happens. Thanks again for your support. :slight_smile:
K.