title: HTTP request failing with EOFException
body: <p>Using Jetty 9.4.10.v20180503, occasionally my HTTP client fails with the following error.</p>
  
  <pre><code>java.io.EOFException: HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]&lt;-DecryptedEndPoint@193ff18c{api.kucoin.com/13.113.121.24:443&lt;-&gt;/192.168.1.100:27497,OPEN,fill=-,flush=-,to=22604/0}-&gt;HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]-&gt;SocketChannelEndPoint@2b50cb15{api.kucoin.com/13.113.121.24:443&lt;-&gt;/192.168.1.100:27497,ISHUT,fill=-,flush=-,to=21603/0}{io=0/0,kio=0,kro=1}-&gt;SslConnection@6de1ad97{NEED_WRAP,eio=-1/-1,di=-1}=&gt;HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
          at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326)
          at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
          at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911)
          at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899)
          at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
          at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
          at com.myapplication.ResponseListener.onComplete(ResponseListener.java:45)
          at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:193)
          at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:185)
          at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:464)
          at org.eclipse.jetty.client.HttpReceiver.abort(HttpReceiver.java:545)
          at org.eclipse.jetty.client.HttpReceiver.responseFailure(HttpReceiver.java:436)
          at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.failAndClose(HttpReceiverOverHTTP.java:369)
          at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:338)
          at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1476)
          at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:209)
          at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:147)
          at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73)
          at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133)
          at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:155)
          at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
          at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
          at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)
          at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)
          at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
          at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
          at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
          at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
          at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
          at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
          at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678)
          ... 1 common frames omitted
      Caused by: java.io.EOFException: HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]&lt;-DecryptedEndPoint@193ff18c{api.kucoin.com/13.113.121.24:443&lt;-&gt;/192.168.1.100:27497,OPEN,fill=-,flush=-,to=22604/0}-&gt;HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]-&gt;SocketChannelEndPoint@2b50cb15{api.kucoin.com/13.113.121.24:443&lt;-&gt;/192.168.1.100:27497,ISHUT,fill=-,flush=-,to=21603/0}{io=0/0,kio=0,kro=1}-&gt;SslConnection@6de1ad97{NEED_WRAP,eio=-1/-1,di=-1}=&gt;HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 &lt;-&gt; r:api.kucoin.com/13.113.121.24:443,closed=false)=&gt;HttpChannelOverHTTP@a423e61(exchange=HttpExchange@e7dbbf1 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4b7f345a(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@61d4e46c{s=START}],recv=HttpReceiverOverHTTP@7a7e7f01(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
  </code></pre>
  
  <p>I'm trying to understand how to interpret this error, specifically the <code>EOFException</code> which seems to list the steps of the transaction.</p>
  
  <ul>
  <li>What is happening at each step?</li>
  <li>At what step of the HTTP request does the error occur?</li>
  <li>Did the client trigger a disconnect or the server?</li>
  <li>Is it safe to automatically retry these kind of failures?</li>
  </ul>