NullPointerException in jdk.incubator.http.internal.hpack.HeaderTable.Table
Pavel Rappo
pavel.rappo at oracle.com
Tue May 29 13:59:29 UTC 2018
A note for the readers of this mailing list. Apologies as this email has not
been visible for quite a while (it was sent on 2018-03-31 and appeared on the
list only on 2018-05-28). However, I have contacted the author and with his
great help the issue was resolved on the 5th of April. The patched version is
available with Early Access JDK 11 Builds here:
http://jdk.java.net/11/
-Pavel
> On 31 Mar 2018, at 13:16, Андрей Турбанов <turbanoff at gmail.com> wrote:
>
> Hello
> I'm trying to new use new shiny httpclient from JDK10. Code is pretty simple. I use synchronous HTTP call form multiple threads:
>
> private final HttpClient httpClient = HttpClient.newBuilder()
>
>
> .executor(Utils.newFixedThreadPoolExecutor(1, "HttpClient"))
>
>
> .build();
>
>
>
> private JsonObject useHttpClient(URL url, String params) throws Exception {
>
>
> HttpRequest req = HttpRequest.newBuilder()
>
>
> .uri(url.toURI())
>
>
> .setHeader("Connection", "keep-alive")
>
>
> .setHeader("Accept-Encoding", "gzip")
>
>
> .timeout(timeout)
>
>
> .POST(HttpRequest.BodyPublisher.fromString(params))
>
>
> .build();
>
>
> HttpResponse<InputStream> response = httpClient.send(req, HttpResponse.BodyHandler.asInputStream());
>
>
> if (response.statusCode() != 200) {
>
>
> throw new IOException("Server returned " + response.statusCode());
>
>
> }
>
>
> String encoding = response.headers().firstValue("content-encoding").orElse("");
>
>
> return parseResponseStream(encoding, response.body());
> }
> Sometimes I get NPEs:
>
> java.lang.NullPointerException: null
>
> at jdk
> .incubator.http.internal.hpack.HeaderTable$Table.remove(HeaderTable.java:455) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.HeaderTable.evictEntry(HeaderTable.java:264) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.HeaderTable.put(HeaderTable.java:233) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.HeaderTable.put(HeaderTable.java:215) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.Decoder.resumeLiteralWithIndexing(Decoder.java:464) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.Decoder.proceed(Decoder.java:268) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.hpack.Decoder.decode(Decoder.java:246) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.Http2Connection.decodeHeaders(Http2Connection.java:471) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.Http2Connection.processFrame(Http2Connection.java:635) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.frame.FramesDecoder.decode(FramesDecoder.java:156) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:195) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.Http2Connection.asyncReceive(Http2Connection.java:528) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1054) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147) ~[jdk.incubator.httpclient:?]
>
> at jdk
> .incubator.http.internal.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198) ~[jdk.incubator.httpclient:?]
>
> at java
> .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) [?:?]
> Are there any problem in my code? What can be reason for this exception?
>
> C:\Program Files\Java\jdk-10\bin>java -
> version
> java version
> "10" 2018-03-20
> Java(TM) SE Runtime Environment 18.3 (build 10+46)
> Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
>
>
> Andrey Turbanov
More information about the net-dev
mailing list