I believe there are some potential concurrency issues with the 20101204
version of socketio-java. Do these errors go away if you use the 20110114
version?

On Wed, Apr 27, 2011 at 1:50 PM, Yuri Z <[email protected]> wrote:

> I discovered some errors related to Socket.IO in waveinabox.net server log
> and would like to report them. They all seem to be connected with Firefox
> socket connection.
>
> The first error looks like this:
>
> 643:DBUG::REQUEST /socket.io/xhr-multipart/ on
> org.eclipse.jetty.server.nio.SelectChannelConnector$2@1534742
> 2011-04-27
> 13:57:05.643:DBUG::sessionManager=org.eclipse.jetty.server.session.HashSessionManager@691714
> 2011-04-27 13:57:05.644:DBUG::session=null
> 2011-04-27 13:57:05.644:DBUG::servlet=default
> 2011-04-27 13:57:05.644:DBUG::servlet holder= default
> 2011-04-27 13:57:05.644:DBUG::chain=
> com.google.inject.servlet.GuiceFilter-28640766->default
> 2011-04-27 13:57:05.644:DBUG::call filter
> com.google.inject.servlet.GuiceFilter-28640766
> 2011-04-27 13:57:05.644:WARN::Committed before 404 null
> 2011-04-27 13:57:05.644:WARN::/socket.io/xhr-multipart/
> java.lang.IllegalStateException: Committed
> at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1052)
>  at org.eclipse.jetty.server.Response.sendError(Response.java:270)
>  at org.eclipse.jetty.server.Response.sendError(Response.java:372)
>  at
> com.glines.socketio.server.transport.XHRTransport$XHRSessionHelper.handle(XHRTransport.java:137)
>  at
> com.glines.socketio.server.transport.AbstractHttpTransport.handle(AbstractHttpTransport.java:90)
>  at
> com.glines.socketio.server.SocketIOServlet.service(SocketIOServlet.java:123)
>  at
> com.glines.socketio.server.SocketIOServlet.service(SocketIOServlet.java:91)
>  at
> org.waveprotocol.box.server.rpc.ServerRpcProvider$WaveSocketIOServlet.service(ServerRpcProvider.java:536)
>
> If we inspect the line 536 at ServerRpcProvider we can see that it happens
> in the service(ServletRequest req, ServletResponse res) method (which I
> think is related to XHR requests, is it correct?). To test this suggestion I
> tried to login using Forefox - it couldn't load the Wave Panel, even that
> Chrome could load it (with some delay).
>
> The second error looked like this:
> [FKlmOuIJJsaW0gJslXON]: writeData(START): ~1~14~FKlmOuIJJsaW0gJslXON
> 2011-04-27 20:18:56.464:DBUG::RESPONSE /search/  200
> 2011-04-27 20:18:56.464:DBUG::EOF org.eclipse.jetty.io.EofException
> 2011-04-27 20:18:56.944:DBUG::EXCEPTION
> org.eclipse.jetty.io.EofException
> at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:905)
>  at
> org.eclipse.jetty.server.HttpConnection.flushResponse(HttpConnection.java:757)
>  at org.eclipse.jetty.server.Response.flushBuffer(Response.java:982)
>  at
> com.glines.socketio.server.transport.XHRPollingTransport$XHRPollingSessionHelper.writeData(XHRPollingTransport.java:51)
>  at
> com.glines.socketio.server.transport.XHRPollingTransport$XHRPollingSessionHelper.customConnect(XHRPollingTransport.java:60)
>  at
> com.glines.socketio.server.transport.XHRTransport$XHRSessionHelper.connect(XHRTransport.java:323)
>  at
> com.glines.socketio.server.transport.XHRTransport.connect(XHRTransport.java:384)
>  at
> com.glines.socketio.server.transport.AbstractHttpTransport.handle(AbstractHttpTransport.java:97)
>
> And then:
> java.io.IOException: Broken pipe
>  at sun.nio.ch.FileDispatcher.write0(Native Method)
>  at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
>  at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:122)
> at sun.nio.ch.IOUtil.write(IOUtil.java:78)
>  at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:352)
>  at
> org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:187)
>  at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:273)
>  at
> org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:849)
>  at
> org.eclipse.jetty.server.HttpConnection.flushResponse(HttpConnection.java:757)
>  at org.eclipse.jetty.server.Response.flushBuffer(Response.java:982)
>  at
> com.glines.socketio.server.transport.XHRPollingTransport$XHRPollingSessionHelper.writeData(XHRPollingTransport.java:51)
>  at
> com.glines.socketio.server.transport.XHRPollingTransport$XHRPollingSessionHelper.customConnect(XHRPollingTransport.java:60)
>  at
> com.glines.socketio.server.transport.XHRTransport$XHRSessionHelper.connect(XHRTransport.java:323)
>  at
> com.glines.socketio.server.transport.XHRTransport.connect(XHRTransport.java:384)
>
> Both exceptions seem to be related with buffer handling for XHR requests. I
> think that this error caused the server to stop responding (the CPU was at
> 100% too). The errors usually happen at relatively high load (about 6-10
> logged in users).
>
> Every advice on how to solve it would be welcome!
> Thanks
> Yuri.
>
>

Reply via email to