Hi all,

we have an application where one part uses the jetty httpclient to
communicate with another part that runs a jetty http server.

Both run version 9.4.2.v20170220.

What I observe is that we very occasionally get an earlyEOF exception (see
example stacktrace below).

What can I do to fix this? Is it safe to just retry and assume the request
has not reached the server?


Some more observations:
- we're not using https
- client and server are running "close" to each other (both machines in the
same office)
- the client is making repeated calls to the server (same url)
- it happens very sporadically (1 call in a 100K ?)
- it looks like https://bugs.eclipse.org/bugs/show_bug.cgi?id=434414. There
was a kind of fix for this (https://bugs.eclipse.org/
bugs/show_bug.cgi?id=476170), but I don't know how to apply it since I
can't find anything about "HttpClient.validateConnections".
- we're using async request/response
- I don't see any stack traces on the server side


As it happens so sporadically I can't really reproduce it in a small test
case.

thanks,

Bert

PS: Here's the stack trace

      java.lang.RuntimeException: Failed to perform request.
      at com.clear2pay.na.cucumber.stepdefinitions.RequestSteps$
RequestAction.perform(RequestSteps.java:141)
      at com.clear2pay.na.cucumber.stepdefinitions.ResponseSteps.lambda$
eventuallyResponseBodyContainsList$3(ResponseSteps.java:167)
      at org.awaitility.core.AssertionCondition$1.eval(
AssertionCondition.java:55)
      at org.awaitility.core.ConditionAwaiter$ConditionPoller.run(
ConditionAwaiter.java:215)
      at java.util.concurrent.Executors$RunnableAdapter.
call(Executors.java:511)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      at ?.Then eventually the response body contains an items list with
only the following elements(features/paymentReturn/
fetchPaymentReturns.feature:32)
      Caused by: java.util.concurrent.ExecutionException:
java.io.EOFException: HttpConnectionOverHTTP@5c17fbe2(l:/10.58.232.33:37384
<-> r:/10.58.233.142:8787,closed=false)=>HttpChannelOverHTTP@
da6d7d(exchange=HttpExchange@46cb4904 req=TERMINATED/null@null
res=PENDING/null@null)[send=HttpSenderOverHTTP@1287e118(
req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@
499f9114{s=START}],recv=HttpReceiverOverHTTP@1afdbcdf(
rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of
-1}]]<-SocketChannelEndPoint@66255ed{/10.58.233.142:8787<->/
10.58.232.33:37384,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->
HttpConnectionOverHTTP@5c17fbe2(l:/10.58.232.33:37384 <-> r:/
10.58.233.142:8787,closed=false)=>HttpChannelOverHTTP@
da6d7d(exchange=HttpExchange@46cb4904 req=TERMINATED/null@null
res=PENDING/null@null)[send=HttpSenderOverHTTP@1287e118(
req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@
499f9114{s=START}],recv=HttpReceiverOverHTTP@1afdbcdf(
rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
      at org.eclipse.jetty.client.util.FutureResponseListener.getResult(
FutureResponseListener.java:118)
      at org.eclipse.jetty.client.util.FutureResponseListener.get(
FutureResponseListener.java:110)
      at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:654)
      at com.clear2pay.na.cucumber.stepdefinitions.RequestSteps$
RequestAction.perform(RequestSteps.java:139)
      at com.clear2pay.na.cucumber.stepdefinitions.ResponseSteps.lambda$
eventuallyResponseBodyContainsList$3(ResponseSteps.java:167)
      at org.awaitility.core.AssertionCondition$1.eval(
AssertionCondition.java:55)
      at org.awaitility.core.ConditionAwaiter$ConditionPoller.run(
ConditionAwaiter.java:215)
      at java.util.concurrent.Executors$RunnableAdapter.
call(Executors.java:511)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      Caused by: java.io.EOFException: HttpConnectionOverHTTP@5c17fbe2(l:/
10.58.232.33:37384 <-> r:/10.58.233.142:8787,closed=
false)=>HttpChannelOverHTTP@da6d7d(exchange=HttpExchange@46cb4904
req=TERMINATED/null@null res=PENDING/null@null)[send=
HttpSenderOverHTTP@1287e118(req=QUEUED,snd=COMPLETED,
failure=null)[HttpGenerator@499f9114{s=START}],recv=
HttpReceiverOverHTTP@1afdbcdf(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0
of -1}]]<-SocketChannelEndPoint@66255ed{/10.58.233.142:8787<->/
10.58.232.33:37384,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->
HttpConnectionOverHTTP@5c17fbe2(l:/10.58.232.33:37384 <-> r:/
10.58.233.142:8787,closed=false)=>HttpChannelOverHTTP@
da6d7d(exchange=HttpExchange@46cb4904 req=TERMINATED/null@null
res=PENDING/null@null)[send=HttpSenderOverHTTP@1287e118(
req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@
499f9114{s=START}],recv=HttpReceiverOverHTTP@1afdbcdf(
rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
      at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(
HttpReceiverOverHTTP.java:310)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1418)
      at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(
HttpReceiverOverHTTP.java:196)
      at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(
HttpReceiverOverHTTP.java:143)
      at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(
HttpReceiverOverHTTP.java:70)
      at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(
HttpChannelOverHTTP.java:130)
      at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(
HttpConnectionOverHTTP.java:116)
      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(
AbstractConnection.java:279)
      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
      at org.eclipse.jetty.io.ChannelEndPoint$2.run(
ChannelEndPoint.java:124)
      at org.eclipse.jetty.util.thread.Invocable.invokePreferred(
Invocable.java:122)
      at org.eclipse.jetty.util.thread.strategy.ExecutingExecutionStrategy.
invoke(ExecutingExecutionStrategy.java:58)
      at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.
produceConsume(ExecuteProduceConsume.java:201)
      at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(
ExecuteProduceConsume.java:133)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
QueuedThreadPool.java:672)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(
QueuedThreadPool.java:590)
      ... 1 more
_______________________________________________
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