That EofException means your client closed the connection before reading
the entire contents of the response.

Why did it close the connection?


Joakim Erdfelt / [email protected]

On Mon, Dec 14, 2015 at 8:37 AM, Sakthivel.P <[email protected]> wrote:

> Hi,
>
> We are using jetty in HP nonstop operating system for many applications.
> Recently found one issue, DefaultServlet fails serving static contents from
> jetty9 which size mor
> ​e ​
> than 54KB.
>
>   <html>
>     <head>
>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
>         <title>Awesome Font Test</title>
>         <link rel="stylesheet"
> href="font-awesome-4.5.0/css/font-awesome.min.css">  <
>         <link rel="stylesheet"
> href="font-awesome-4.5.0/css/font-awesome.min1.css">
>         <link rel="stylesheet"
> href="font-awesome-4.5.0/css/font-awesome.min2.css">
>     </head>
>     <body>
>         <h1>Awesome Font Test</h1>
>         <ul class="fa-ul">
>             <li><i class="fa-li fa fa-check-square"></i>List icons</li>
>             <li><i class="fa-li fa fa-spinner fa-spin"></i>as bullets</li>
>             <li><i class="fa-li fa fa-square"></i>in lists</li>
>             <li><i class="fa-li fa fa-refresh" title="Refresh" >Refresh</i>
>         </ul>
>
>     </body>
> </html>
>
> For the above simple html page, a static file like JS or CSS file which
> size is morethan 54KB fails while downloading and jetty logs the following
> error.
>
> 015-12-14 07:07:02,228 DEBUG [qtp26845234-13 -
> /fonttest/font-awesome-4.5.0/css/font-awesome2.min.css]
> o.eclipse.jetty.server.HttpChannel -
> org.eclipse.jetty.io.EofException: null
>     at
> org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:192)
> ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:408)
> ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:302)
> ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:129)
> ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:676)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:246)
> ~[jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:208)
> ~[jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:471)
> [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:763)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:801)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:147)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:588)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:674)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:576)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.servlet.DefaultServlet.sendData(DefaultServlet.java:960)
> ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:534)
> ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> ~[servlet-api-3.1.jar:3.1.0]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> ~[servlet-api-3.1.jar:3.1.0]
>     at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
> ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
> ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
> ~[jetty-security-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
> ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.server.Server.handle(Server.java:499)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
> [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
> [jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
>     at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
> Caused by: java.io.IOException: Invalid function argument (errno:4022)
>     at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) ~[na:1.7.0_65]
>     at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51)
> ~[na:1.7.0_65]
>     at sun.nio.ch.IOUtil.write(IOUtil.java:148) ~[na:1.7.0_65]
>     at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:537)
> ~[na:1.7.0_65]
>     at
> org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:172)
> ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
>
> Default HP Nonstop http output buffer size is 54k. and
> Jetty.output.buffer.size is set 32768 however static files not being chuked
> and buffered through
> ​​
> NIO connector
> ​​ where as our own servlets output buffering work with chunks without any
> error.  Default Servlet trying to flush entire file content at once instead
> of multiple chunks.
>
> ​I​ didnt some anaylse commented out writing it throuh
> GatheringByteChannel and jetty able to serves static js files but still
> throws the error for woff type web fonts.
>
> ​org.eclipse.jetty.io.ChannelEndPoint​.Java
>
> ​   @Override
>     public boolean flush(ByteBuffer... buffers) throws IOException
>     {
>         int flushed=0;
>         try
>         {
>             if (buffers.length==1)
>                 flushed=_channel.write(buffers[0]);
>             //else if (buffers.length>1 && _channel instanceof
> GatheringByteChannel)
>              //   flushed=
> (int)((GatheringByteChannel)_channel).write(buffers,0,buffers.length); //fails
> buffering
>             else
>             {
>                 for (ByteBuffer b : buffers)
>                 {
>                     if (b.hasRemaining())
>                     {
>                         int l=_channel.write(b);
>                         if (l>0)
>                             flushed+=l;
>                         if (b.hasRemaining())
>                             break;
>                     }
>                 }
>             }
>             if (LOG.isDebugEnabled())
>                 LOG.debug("flushed {} {}", flushed, this);
>         }
>         catch (IOException e)
>         {
>             throw new EofException(e);
>         }
>
>         if (flushed>0)
>             notIdle();
>
>         for (ByteBuffer b : buffers)
>             if (!BufferUtil.isEmpty(b))
>                 return false;
>
>         return true;
>     }
>
> ​I've also tried adding adding the following ​MIME mapping in
> webdefault.xml but no help.
>
>  <mime-mapping>
>     <extension>woff</extension>
>     <mime-type>application/font-woff</mime-type>
>   </mime-mapping>
>   <mime-mapping>
>     <extension>woff2</extension>
>     <mime-type>application/font-woff2</mime-type>
>   </mime-mapping>
> <mime-mapping>
>     <extension>eot</extension>
>     <mime-type>application/vnd.ms-fontobject</mime-type>
>   </mime-mapping>
>
> Can some one look at this issue.
>
>
> os.name = NONSTOP_KERNEL
> java.runtime.version = 1.7.0_65-b19
> os.version = L15.08
>
> Attached system.properties for more
> ​ ​details.
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to