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.
