Bug 65350 - The index ID of the request header that Jetty sent to Tomcat was not found in the index table on the Tomcat side
Summary: The index ID of the request header that Jetty sent to Tomcat was not found in...
Status: NEEDINFO
Alias: None
Product: Tomcat 9
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 9.0.45
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: -----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-03 14:15 UTC by Thomas
Modified: 2021-06-09 11:01 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas 2021-06-03 14:15:02 UTC
Jetty version
9.4.41.v20210516

OS type/version
Centos 7

I use jetty http client to call tomcat server in h2c protocol. I encountered the following exception after running about 8 hours.
It seems the header tables are not sync between jetty and tomcat.

java.lang.NullPointerException
at org.apache.coyote.http2.HpackDecoder.handleIndex(HpackDecoder.java:267)
at org.apache.coyote.http2.HpackDecoder.decode(HpackDecoder.java:109)
at org.apache.coyote.http2.Http2Parser.readHeaderPayload(Http2Parser.java:486)
at org.apache.coyote.http2.Http2Parser.readHeadersFrame(Http2Parser.java:270)
at org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:251)
at org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:164)
at org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler.completed(SocketWrapperBase.java:1089)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1621)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Comment 1 Mark Thomas 2021-06-07 18:22:37 UTC
Without some idea of how to reproduce this - and ideally a test case that demonstrates it - there isn't enough information in this report for the Tomcat team to work with.

Given that the header state is maintained at the connection level, we'd likely need to see a network trace for the entire connection if we were going to debug this from the network trace.

What we can do is add some debug logging that might provide some pointers if Tomcat is run with the hpack debug logging enabled.
Comment 2 Christopher Schultz 2021-06-07 19:32:26 UTC
I can't seem to find the reference to it, now, but I thought the reporter said that a header line (or name?) with > 1024 characters seems to trigger this. I'll keep searching for that reference.
Comment 3 Mark Thomas 2021-06-07 19:41:02 UTC
Additional debug logging added in
- 10.1.x for 10.1.0-M1 onwards
- 10.0.x for 10.0.7 onwards
- 9.0.x for 9.0.47 onwards
- 8.5.x for 8.5.67 onwards

Enable with:

org.apache.coyote.http2.HpackDecoder.level = FINE 

in $CATALINA_BASE/logging.properties
Comment 4 Thomas 2021-06-09 07:36:09 UTC
The same issue was submitted in jetty, please help address it.
https://github.com/eclipse/jetty.project/issues/6341
Comment 5 Joakim Erdfelt 2021-06-09 11:01:40 UTC
(In reply to Christopher Schultz from comment #2)
> I can't seem to find the reference to it, now, but I thought the reporter
> said that a header line (or name?) with > 1024 characters seems to trigger
> this. I'll keep searching for that reference.

I think you are referring to https://bz.apache.org/bugzilla/show_bug.cgi?id=65340