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, Андрей Турбанов <turban...@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