-
Bug
-
Resolution: Fixed
-
P4
-
11, 17, 18, 19, 20
-
b10
-
generic
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8340881 | 17.0.14 | Alexey Bakhtin | P4 | Resolved | Fixed | b01 |
JDK-8340649 | 17.0.13 | Alexey Bakhtin | P4 | Resolved | Fixed | b09 |
JDK-8340883 | 11.0.26 | Alexey Bakhtin | P4 | Resolved | Fixed | b01 |
JDK-8340650 | 11.0.25 | Alexey Bakhtin | P4 | Resolved | Fixed | b07 |
Ubuntu 20.04.5
openjdk 19.0.1 2022-10-18
OpenJDK Runtime Environment (build 19.0.1+10-21)
OpenJDK 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
HttpClient throws java.io.IOException: no statuscode in response when used with HTTP2 endpoint. Changing the version of request to HTTP 1.1 seems to fix the problem.
Stack trace seems to be similar in meaning to https://bugs.openjdk.org/browse/JDK-8263031?jql=text%20~%20%22no%20statuscode%20in%20response%22 which should be fix in opne-jdk 19. However I am still experiencing the problem - maybe the root cause is different.
Exception in thread "main" java.io.IOException: no statuscode in response
at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:857)
at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:123)
at Test.main(Test.java:17)
Caused by: java.io.IOException: no statuscode in response
at java.net.http/jdk.internal.net.http.Stream.lambda$handleResponse$2(Stream.java:497)
at java.base/java.util.OptionalLong.orElseThrow(OptionalLong.java:273)
at java.net.http/jdk.internal.net.http.Stream.handleResponse(Stream.java:497)
at java.net.http/jdk.internal.net.http.Stream.incoming(Stream.java:463)
at java.net.http/jdk.internal.net.http.Http2Connection.processFrame(Http2Connection.java:838)
at java.net.http/jdk.internal.net.http.frame.FramesDecoder.decode(FramesDecoder.java:155)
at java.net.http/jdk.internal.net.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:232)
at java.net.http/jdk.internal.net.http.Http2Connection.asyncReceive(Http2Connection.java:681)
at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1387)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:303)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:256)
at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.runOrSchedule(Http2Connection.java:1405)
at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.onNext(Http2Connection.java:1431)
at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.onNext(Http2Connection.java:1365)
at java.net.http/jdk.internal.net.http.common.SSLTube$DelegateWrapper.onNext(SSLTube.java:210)
at java.net.http/jdk.internal.net.http.common.SSLTube$SSLSubscriberWrapper.onNext(SSLTube.java:492)
at java.net.http/jdk.internal.net.http.common.SSLTube$SSLSubscriberWrapper.onNext(SSLTube.java:295)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run1(SubscriberWrapper.java:316)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run(SubscriberWrapper.java:259)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:303)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:256)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.outgoing(SubscriberWrapper.java:232)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.outgoing(SubscriberWrapper.java:198)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:444)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:268)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1589)
Process finished with exit code 1
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Use java code provided below to send a request via HttpClient.
---------- BEGIN SOURCE ----------
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
public class Test {
public static void main(String[] args) throws IOException, InterruptedException {
String baseUri = "https://dawa.aws.dk/autocomplete?q=Rentemestervej+8,+2400+K%C3%B8benhavn+NV";
HttpRequest build = HttpRequest
.newBuilder(URI.create(baseUri))
.build();
HttpResponse<String> send = HttpClient.newHttpClient().send(build, BodyHandlers.ofString());
String body = send.body();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Changing the HTTP version to 1.1 by adding .version(HttpClient.Version.HTTP_1_1) when building HttpRequest object.
FREQUENCY : always
- backported by
-
JDK-8340649 HttpClient throws java.io.IOException: no statuscode in response for HTTP2
-
- Resolved
-
-
JDK-8340650 HttpClient throws java.io.IOException: no statuscode in response for HTTP2
-
- Resolved
-
-
JDK-8340881 HttpClient throws java.io.IOException: no statuscode in response for HTTP2
-
- Resolved
-
-
JDK-8340883 HttpClient throws java.io.IOException: no statuscode in response for HTTP2
-
- Resolved
-
- links to
-
Commit openjdk/jdk/f4b140b4
-
Commit(master) openjdk/jdk11u/0358cbd0
-
Commit(master) openjdk/jdk17u/33cd4b41
-
Review openjdk/jdk/12028
-
Review(master) openjdk/jdk11u-dev/2909
-
Review(master) openjdk/jdk11u/96
-
Review(master) openjdk/jdk17u-dev/2798
-
Review(master) openjdk/jdk17u/399