我遇到了Jetty 9.4.19 Http2 Client的异常。该服务器是在Jetty上运行的Spring Boot应用程序(2.1.8版本)
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) [?:?]
任何指针都将受到高度赞赏。
答案 0 :(得分:0)
作为异常报告,服务器已发送了无效的HPACK块。
这是什么服务器? Tomcat?
如果通过将类别HTTP2Client
设置为org.eclipse.jetty.http2
为Jetty DEBUG
启用DEBUG日志,您将获得有关客户端认为错误的更多详细信息。
就像服务器发送了无效的标头或类似的内容。
由于您基于Spring Boot,因此也可以在服务器端启用Jetty(如果尚未启用),如here所示,并查看问题是否仍然存在。