web-dev-qa-db-fra.com

org.Eclipse.jetty.io.EofException: Early EOF levé lors du téléchargement d'un gros fichier

Pendant que je télécharge un fichier volumineux (environ 50 Mo), j'obtiens org.Eclipse.jetty.io.EofException: Early EOF exception. Ma version du serveur de jetée est " 9.2.9.v20150224 ".

org.Eclipse.jetty.io.EofException: Early EOF
at org.Eclipse.jetty.server.HttpInput$3.noContent(HttpInput.Java:505) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.Eclipse.jetty.server.HttpInput.read(HttpInput.Java:124) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.Apache.http.entity.InputStreamEntity.writeTo(InputStreamEntity.Java:142) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.Java:96) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.Java:112) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.Java:117) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.Java:265) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.Java:231) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.Java:237) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.Java:122) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.Java:685) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:487) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.Java:882) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:117) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:55) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.client.HttpClient$execute$2.call(Unknown Source) ~[na:na]

org.Eclipse.jetty.io.EofException
at org.Eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.Java:192)
at org.Eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.Java:408)
at org.Eclipse.jetty.io.WriteFlusher.write(WriteFlusher.Java:302)
at org.Eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.Java:129)
at org.Eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.Java:676)
at org.Eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.Java:246)
at org.Eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.Java:208)
at org.Eclipse.jetty.server.HttpConnection.send(HttpConnection.Java:471)
at org.Eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.Java:763)
at org.Eclipse.jetty.server.HttpChannel.write(HttpChannel.Java:801)
at org.Eclipse.jetty.server.HttpOutput.write(HttpOutput.Java:142)
at org.Eclipse.jetty.server.HttpOutput.write(HttpOutput.Java:135)
at org.Eclipse.jetty.server.HttpOutput.flush(HttpOutput.Java:237)
at Java_io_Flushable$flush.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.Java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.Java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.Java:112)
at SendResponseFilter.writeResponse(SendResponse.groovy:128)
at SendResponseFilter$writeResponse.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.Java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.Java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.Java:145)
at SendResponseFilter.writeResponse(SendResponse.groovy:102)
at SendResponseFilter.run(SendResponse.groovy:59)
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.Java:112)
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.Java:197)
at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.Java:161)
at com.netflix.zuul.FilterProcessor.postRoute(FilterProcessor.Java:92)
at com.netflix.zuul.ZuulRunner.postRoute(ZuulRunner.Java:87)
at com.netflix.zuul.http.ZuulServlet.postRoute(ZuulServlet.Java:107)
at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.Java:88)
at realdoc.spider.SpiderServlet.service(SpiderServlet.Java:66)
at org.Eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.Java:808)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1669)
at com.netflix.zuul.context.ContextLifecycleFilter.doFilter(ContextLifecycleFilter.Java:40)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1652)
at org.Eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.Java:259)
at org.Eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.Java:222)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1652)
at org.Eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.Java:585)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:143)
at org.Eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.Java:577)
at org.Eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.Java:223)
at org.Eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.Java:1127)
at org.Eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.Java:515)
at org.Eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.Java:185)
at org.Eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.Java:1061)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:141)
at org.Eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.Java:97)
at org.Eclipse.jetty.server.Server.handle(Server.Java:497)
at org.Eclipse.jetty.server.HttpChannel.handle(HttpChannel.Java:310)
at org.Eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.Java:257)
at org.Eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.Java:540)
at org.Eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.Java:635)
at org.Eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.Java:555)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.io.IOException: Broken pipe
at Sun.nio.ch.FileDispatcherImpl.writev0(Native Method)
at Sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.Java:51)
at Sun.nio.ch.IOUtil.write(IOUtil.Java:148)
at Sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.Java:504)
at org.Eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.Java:172)
... 55 more

Si quelqu'un a une idée à ce sujet, veuillez m'aider.

13
RIPAN

Ces traces de pile montrent simplement les résultats d'une terminaison de connexion, mais pas la raison pour laquelle elle s'est terminée.

Le Java.io.IOException: Broken pipe Signifie que la connexion a été interrompue, de façon inattendue au niveau du système d'exploitation.

org.Eclipse.jetty.io.EofException Pendant org.Eclipse.jetty.io.ChannelEndPoint.flush() signifie que le contenu du corps de la réponse n'a pas pu terminer le vidage sur le réseau lorsque la connexion a été interrompue.

Le org.Eclipse.jetty.io.EofException: Early EOF Pendant org.Eclipse.jetty.server.HttpInput.read() signifie qu'en lisant activement la demande (pas clair si son contenu corporel ou les en-têtes de stacktrace) de la connexion (un Java.nio.channels.SocketChannel Dans ce cas), il s'est terminée prématurément et la demande HTTP complète n'a pas été reçue (en-têtes et contenu du corps).

Il peut y avoir d'autres erreurs dans les journaux de votre client ou du serveur qui pourraient indiquer ce qui se passe.
Vous pouvez tester cette demande avec d'autres outils (comme curl) pour voir si c'est votre client, ou le réseau, ou Jetty. Vous pouvez également utiliser un outil tel que wirehark pour capturer le trafic réseau et voir d'où provient la terminaison de la connexion (client ou serveur)

31
Joakim Erdfelt

Ce que j'ai trouvé dans le problème est que, dans l'en-tête http "Content-Length" venait comme quelque chose comme xxx, à cause du wifi Internet bâclé, avant que tout le contenu ne soit lu (moins de xxx), le flux était fermé et au-dessus de l'exception est levée .

Un autre problème est le délai d'expiration. Avant que le flux entier ne soit lu (car c'est un gros fichier), en raison du délai d'expiration, le flux est fermé prématurément et une exception est levée comme ci-dessus.

Il peut également y avoir d'autres raisons, mais j'ai rencontré ces problèmes.

2
RIPAN