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. > >
