Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Action not sent to server - debugging?
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.
Any hints greatly appreciated!
Thanks and best regards,
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.
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
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.
Thanks again and all the best,
You can debug client-side code using superdevmode.
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?
Anyway, we'll see what happens. Thanks again for your support. :)