Bug 65350

Summary: The index ID of the request header that Jetty sent to Tomcat was not found in the index table on the Tomcat side
Product: Tomcat 9 Reporter: Thomas <qingdaoheze>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED WORKSFORME    
Severity: normal    
Priority: P2    
Version: 9.0.45   
Target Milestone: -----   
Hardware: PC   
OS: Linux   

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
Comment 6 Mark Thomas 2021-07-22 16:57:55 UTC
It has been more than a month and no debug logs have been provided that show this issue. Unless the information requested is provided, this issue will eventually get resolved as WORKSFORME.
Comment 7 Mark Thomas 2021-08-24 10:32:48 UTC
Another month has passed. This issue is heading towards a WONTFIX resolution.
Comment 8 Mark Thomas 2021-11-02 11:51:08 UTC
Several further months have passed with no further information provided. I am therefore resolving this as WORKSFORME.

If, and only if, you are able to provide a test case that demonstrates this issue, feel free to re-open this issue and provide the test case.