Сбой HTTP-запроса с EOFException - PullRequest
0 голосов
/ 17 мая 2018

При использовании Jetty 9.4.10.v20180503 иногда мой HTTP-клиент выходит из строя со следующей ошибкой.

java.io.EOFException: HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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}]]<-DecryptedEndPoint@193ff18c{api.kucoin.com/13.113.121.24:443<->/192.168.1.100:27497,OPEN,fill=-,flush=-,to=22604/0}->HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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}]]->SocketChannelEndPoint@2b50cb15{api.kucoin.com/13.113.121.24:443<->/192.168.1.100:27497,ISHUT,fill=-,flush=-,to=21603/0}{io=0/0,kio=0,kro=1}->SslConnection@6de1ad97{NEED_WRAP,eio=-1/-1,di=-1}=>HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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}]]<-DecryptedEndPoint@193ff18c{api.kucoin.com/13.113.121.24:443<->/192.168.1.100:27497,OPEN,fill=-,flush=-,to=22604/0}->HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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}]]->SocketChannelEndPoint@2b50cb15{api.kucoin.com/13.113.121.24:443<->/192.168.1.100:27497,ISHUT,fill=-,flush=-,to=21603/0}{io=0/0,kio=0,kro=1}->SslConnection@6de1ad97{NEED_WRAP,eio=-1/-1,di=-1}=>HttpConnectionOverHTTP@571103e6(l:/192.168.1.100:27497 <-> r:api.kucoin.com/13.113.121.24:443,closed=false)=>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}]]

Я пытаюсь понять, как интерпретировать эту ошибку, в частности EOFException, который, кажется, перечисляет шаги транзакции.

  • Что происходит на каждом шагу?
  • На каком шаге HTTP-запроса возникает ошибка?
  • Клиент инициировал отключение или сервер?
  • Безопасно ли автоматически повторять подобные сбои?
...