`IntegrationTestGetContent.getContentResponse()` is flaky
- Dominant language
- Java
- Stars
- 4.1k
- Forks
- 2k
- Avg merge
- 3d 56m
- Merged PRs (30d)
- 48
Description
**Jetty version(s)**
12.1.x
**Jetty Environment**
ee9
**Description**
`org.eclipse.jetty.ee9.maven.plugin.it.IntegrationTestGetContent.getContentResponse()` somestimes fails with:
```
java.util.concurrent.ExecutionException: java.io.EOFException: oejcti.HttpConnectionOverHTTP@226126b4::oeji.SocketChannelEndPoint@1a1c1c5a[{l=/127.0.0.1:38528,r=localhost/127.0.0.1:32947,ISHUT,fill=-,flush=-,to=0/30000}{io=0/0,kio=0,kro=1}]->[oejcti.HttpConnectionOverHTTP@226126b4(l:/127.0.0.1:38528 <-> r:localhost/127.0.0.1:32947,closed=false)=>oejcti.HttpChannelOverHTTP@a7cf098(exchange=HttpExchange@5de67052{req=oejct.HttpRequest[GET /setbycontextxml/hello HTTP/1.1]@5fe8941b[TERMINATED/null] res=HttpResponse[null 0 null]@6a96695[PENDING/null]})[send=oejcti.HttpSenderOverHTTP@6b3cbee8(req=QUEUED,failure=null)[oejh.HttpGenerator@536273d{s=START}],recv=oejcti.HttpReceiverOverHTTP@1ee533cc(ex=HttpExchange@5de67052{req=oejct.HttpRequest[GET /setbycontextxml/hello HTTP/1.1]@5fe8941b[TERMINATED/null] res=HttpResponse[null 0 null]@6a96695[PENDING/null]},rsp=IDLE,failure=null)[oejh.HttpParser{s=CLOSED,0 of -1}]]]
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
at org.eclipse.jetty.client.transport.HttpRequest.send(HttpRequest.java:731)
at org.eclipse.jetty.client.HttpClient.GET(HttpClient.java:379)
at org.eclipse.jetty.client.HttpClient.GET(HttpClient.java:364)
at org.eclipse.jetty.ee9.maven.plugin.it.IntegrationTestGetContent.getContentResponse(IntegrationTestGetContent.java:53)
Caused by: java.io.EOFException: oejcti.HttpConnectionOverHTTP@226126b4::oeji.SocketChannelEndPoint@1a1c1c5a[{l=/127.0.0.1:38528,r=localhost/127.0.0.1:32947,ISHUT,fill=-,flush=-,to=0/30000}{io=0/0,kio=0,kro=1}]->[oejcti.HttpConnectionOverHTTP@226126b4(l:/127.0.0.1:38528 <-> r:localhost/127.0.0.1:32947,closed=false)=>oejcti.HttpChannelOverHTTP@a7cf098(exchange=HttpExchange@5de67052{req=oejct.HttpRequest[GET /setbycontextxml/hello HTTP/1.1]@5fe8941b[TERMINATED/null] res=HttpResponse[null 0 null]@6a96695[PENDING/null]})[send=oejcti.HttpSenderOverHTTP@6b3cbee8(req=QUEUED,failure=null)[oejh.HttpGenerator@536273d{s=START}],recv=oejcti.HttpReceiverOverHTTP@1ee533cc(ex=HttpExchange@5de67052{req=oejct.HttpRequest[GET /setbycontextxml/hello HTTP/1.1]@5fe8941b[TERMINATED/null] res=HttpResponse[null 0 null]@6a96695[PENDING/null]},rsp=IDLE,failure=null)[oejh.HttpParser{s=CLOSED,0 of -1}]]]
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:550)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1805)
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:323)
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.parseAndFill(HttpReceiverOverHTTP.java:252)
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:85)
at org.eclipse.jetty.client.transport.internal.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:97)
at org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:267)
at org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP$FillableCallback.succeeded(HttpConnectionOverHTTP.java:458)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:54)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:492)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.epcRunTask(AdaptiveExecutionStrategy.java:428)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:401)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:255)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:196)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:1009)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1239)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1194)
at java.base/java.lang.Thread.run(Thread.java:840)```
```
See: https://jenkins.webtide.net/blue/organizations/jenkins/jetty.project/detail/PR-14437/7/tests
Contributor guide
Research direction
Locate org.eclipse.jetty.ee9.maven.plugin.it.IntegrationTestGetContent and inspect getContentResponse() at line 53, where the EOFException occurs. Use the Jenkins PR-14437/7 test report as a reproduction reference, then run the integration test and identify why the request intermittently ends early. Done means the test completes reliably without the reported EOFException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100