1st GWT app in production

13 views
Skip to first unread message

Eddy

unread,
Apr 29, 2007, 6:43:43 AM4/29/07
to Google Web Toolkit
Hi,

my first GWT app is in production phase! :)
Everything seems to work perfectly except for old browsers (like IE5)
but we decided to go on anyway.
However, being running for a couple of days (20k visits/day) I am
noticing these two strange exceptions:

Exception while dispatching incoming RPC call
javax.servlet.ServletException: Client did not send 125 bytes as
expected

and:

Exception while dispatching incoming RPC call
java.net.SocketTimeoutException: Read timed out

they happen every hour or so, it seems they are not related to each
other and unfortunately I can't see a way to debug since they never
happened in testing machines.
Is there a way to understand what is rising these exceptions?

Any help appreciated
Thanks
Edoardo

PS: I can post the full stacklog if needed

Rob Coops

unread,
Apr 29, 2007, 8:38:44 AM4/29/07
to Google-We...@googlegroups.com
It of course always helps to see the full log as that usualy contains a lot more info about what is going on and where...
 
I would guess (and this is no more then that).
The two errors both mention incomming RPC calls and both mention a lack of comunication from the source (one not enough information) the other no response... I would start looking in the direction of latency errors, packetloss or users leaving the site shortly after initiating a RPC call.
 
The one thing a lot of test cases in a test environment do not check for is how a system reacts when the network is busy, for the simple reason that this is not easy to emulate a real world situation. Though I would start looking in that direction if I where you.
 
Regards,
 
Rob

 

Reinier Zwitserloot

unread,
Apr 29, 2007, 2:43:34 PM4/29/07
to Google Web Toolkit
People close browsers sometimes. I think that's all. Try it yourself:
connect to your own site with a very very slow connection, and just
deep-six the webbrowser right in the middle of an ajax call, see what
happends.

IE versions below IE 6 have basically no javascript support. GWT will
never run on it, ever. It's an annoyance, but given GWT's structure,
inevitable. No one has IE 5 except Windows NT users, who cannot run
IE6 (or 7). You can build a (javascript, heh - you'll have to write
IE5 specific gimpy javascript, it can be done) method that will be
called by GWT (I forgot how, though) if no compatible browser is
detected. You could then display something along the lines of: Hey,
this isn't gonna work, but you're in luck: Both Opera and FireFox are
free and -do- run on Windows NT, and we do support those browsers.


On Apr 29, 2:38 pm, "Rob Coops" <rco...@gmail.com> wrote:
> It of course always helps to see the full log as that usualy contains a lot
> more info about what is going on and where...
>
> I would guess (and this is no more then that).
> The two errors both mention incomming RPC calls and both mention a lack of
> comunication from the source (one not enough information) the other no
> response... I would start looking in the direction of latency errors,
> packetloss or users leaving the site shortly after initiating a RPC call.
>
> The one thing a lot of test cases in a test environment do not check for is
> how a system reacts when the network is busy, for the simple reason that
> this is not easy to emulate a real world situation. Though I would start
> looking in that direction if I where you.
>
> Regards,
>
> Rob
>

Eddy

unread,
Apr 29, 2007, 6:22:34 PM4/29/07
to Google Web Toolkit
Reinier and Rob
Thanks a lot for both answers,
IE5 considerations are the same I made when I had to decide whether to
go on with GWT or not.
on this app, statistics shows that 1.6% of web traffic is generated by
IE5 ... acceptable to me.
I am putting the full stacklog for the records, even though I have
thoroughly checked the app and I agree that this can only be
originated by closing the browser during the init phase of gwt.
Regards


29/04 23:48:07 user Exception while dispatching incoming RPC call


javax.servlet.ServletException: Client did not send 125 bytes as
expected

at
com.google.gwt.user.server.rpc.RemoteServiceServlet.readPayloadAsUtf8(RemoteServiceServlet.java:
582)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
853)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at
jrunx.util.DynamicClassLoaderFilter.doFilter(DynamicClassLoaderFilter.java:
48)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.StandardSecurityFilter.doFilter(StandardSecurityFilter.java:
103)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.JSecurityCheckFilter.doFilter(JSecurityCheckFilter.java:
70)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
249)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:
204)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

29/04 15:40:27 user Exception while dispatching incoming RPC call
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:
277)
at
jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:581)
at
jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:573)
at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:
591)
at jrun.servlet.jrpp.JrppInputStream.read(JrppInputStream.java:
79)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:
277)
at jrun.servlet.ServletIn.read(ServletIn.java:49)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.readPayloadAsUtf8(RemoteServiceServlet.java:
580)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
853)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at
jrunx.util.DynamicClassLoaderFilter.doFilter(DynamicClassLoaderFilter.java:
48)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.StandardSecurityFilter.doFilter(StandardSecurityFilter.java:
103)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.JSecurityCheckFilter.doFilter(JSecurityCheckFilter.java:
70)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
249)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:
204)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

java.lang.NullPointerException
at
jrun.servlet.jrpp.ProxyEndpoint.parseHeaders(ProxyEndpoint.java:855)
at
jrun.servlet.jrpp.ProxyEndpoint.readRequest(ProxyEndpoint.java:274)
at
jrun.servlet.jrpp.JRunProxyService.swapRunnable(JRunProxyService.java:
144)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.swapRunnable(ThreadPool.java:292)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.swapRunnable(ThreadPool.java:410)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.swapRunnable(ThreadPool.java:252)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:76)

Ryan Dewsbury

unread,
Apr 29, 2007, 9:28:55 PM4/29/07
to Google Web Toolkit
Eddy, I get these same exceptions on the server and have attributed it
to broken connections.

Reinier Zwitserloot

unread,
Apr 30, 2007, 12:24:12 AM4/30/07
to Google Web Toolkit
Bleh, completely forgot to do this last post:

Congratulations, Eddy! 20k visits a day is no walk in the park!

--Reinier Zwitserloot

http://tipit.to/
http://www.fourstarters.com/

Eddy

unread,
May 1, 2007, 5:36:16 PM5/1/07
to Google Web Toolkit
it is not "my" website :)
and it was very tempting to use GWT in such app.. I think we made it
(finger crossed)
and let me say it loud: GWT's great!!
Reply all
Reply to author
Forward
0 new messages