Gopal
Gopal

Reputation: 65

Issue with Jetty Http2 Client

I m getting below exception with Jetty 9.4.19 Http2 Client. The server is a Spring boot application ( 2.1.8 release ) running on Jetty

Request failed: java.io.IOException: protocol_error/invalid_hpack_block
at org.eclipse.jetty.http2.client.http.HttpReceiverOverHTTP2.onFailure(HttpReceiverOverHTTP2.java:184)
at org.eclipse.jetty.http2.HTTP2Stream.notifyFailure(HTTP2Stream.java:611)
at org.eclipse.jetty.http2.HTTP2Stream.onFailure(HTTP2Stream.java:361)
at org.eclipse.jetty.http2.HTTP2Stream.process(HTTP2Stream.java:267)
at org.eclipse.jetty.http2.HTTP2Session.onStreamFailure(HTTP2Session.java:513) 
at org.eclipse.jetty.http2.parser.Parser$Listener$Wrapper.onStreamFailure(Parser.java:404)
at org.eclipse.jetty.http2.parser.BodyParser.notifyStreamFailure(BodyParser.java:235)
at org.eclipse.jetty.http2.parser.BodyParser.streamFailure(BodyParser.java:228) 
at org.eclipse.jetty.http2.parser.HeaderBlockParser.parse(HeaderBlockParser.java:106) 
at org.eclipse.jetty.http2.parser.HeadersBodyParser.parse(HeadersBodyParser.java:172) 
at org.eclipse.jetty.http2.parser.Parser.parseBody(Parser.java:194) 
at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:123) 
at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:248) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:357) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:181) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) 
at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:170) 
at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:125) 
at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:348) 
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:427) 
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:321) 
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159) 
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) 
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) 
at java.lang.Thread.run(Unknown Source) [?:?]

Any pointers will be highly appreciated.

Upvotes: 0

Views: 2413

Answers (1)

sbordet
sbordet

Reputation: 18597

The server has sent an invalid HPACK block, as the exception reports.

What server it is? Tomcat?

You will get more details about what the client considers wrong if you enable DEBUG logging for the Jetty HTTP2Client, by setting the category org.eclipse.jetty.http2 to DEBUG.

Likely the server sent down an invalid header or something similar.

Since you're based on Spring Boot, you can enable Jetty on the server side too (if not already), as shown here and see if the problem still happens.

Upvotes: 0

Related Questions