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