https://bz.apache.org/bugzilla/show_bug.cgi?id=64830

            Bug ID: 64830
           Summary: HTTP2 : GOAWAY sent with Protocol Error and Frame Size
                    Error
           Product: Tomcat 9
           Version: 9.0.39
          Hardware: HP
                OS: Linux
            Status: NEW
          Severity: regression
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: arshiya.shar...@ericsson.com
  Target Milestone: -----

Sub-Component - Coyote

OS : Redhat Linux

Overview:

Embedded Tomcat version 9.0.39 is implemented to transport http/2 packets
between 2 systems (h2c connection).
Http2 packets of payload size 55KB sent from the client are processed
asynchronously .
The content-type of request/response is application/json. For few requests
Tomcat sends GOAWAY with reason that seems irrelevant .

1)GOAWAY with PROTOCOL ERROR : The content length header value [55294] does not
agree with the size of the data received [55295]
Where, both the content length header value and the size of the data received
is 55295 bytes  
2)GOAWAY with FRAME_SIZE_ERROR : The payload is [6386210] bytes long but the
max frame size is [16384]
Where , the payload size is only around 55 KB
Please find attached the PCAPs for reference.

We have tried and reproduced these exceptions with a sample code implementing
embedded tomcat version 9.0.39 with payload size of around 55KB . Please find
below the steps to reproduce. I have attached the sample code / input JMX file
to reproduce the issue. 

Steps to Reproduce:

With JMeter as simulation client, on configuring 700 threads (700 connections)
to connect towards Tomcat Server 9.0.39 embedded in our system and on sending
20 requests per second with payload of 55KB (same request with just one json
value sent uniquely via the Random number generator)and on letting the test run
in an infinite loop , few requests are getting timed out . On analysing the
PCAP for the particular request we see that tomcat sends GOAWAY with  PROTOCOL
ERROR / FRAME_SIZE_ERROR where the reason seems to be incorrect.

Client:
JMeter 5.3 with additional HTTP2 sampler.
No of threads: 700
Ramp-up period:10 seconds       
Loop:Infinite
Payload size: around 55KB
Constant Throughput Timer added to limit the tps to 20.
Random Variable Generator added to the JSON request to uniquely identify for
which request the exception is printed and to map it in the PCAP collected .
Response Timeout : 5000 ms

SERVER:
Sample application attached .
MaxThreads configured in tomcat is 200(all other parameters are the tomcat
defaults).
The input requests are processed asynchronously with 40 threads.

Build:
Embedded tomcat 9.0.39

Resolution/Clarification requested:
Can you please explain the root cause for this . 

Thanks in advance.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to