https://bz.apache.org/bugzilla/show_bug.cgi?id=66602
Bug ID: 66602
Summary: TCP abnormal shutdown during pressure testing based on
HTTP2 (h2c)
Product: Tomcat 9
Version: 9.0.75
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: Connectors
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: -----
Created attachment 38559
--> https://bz.apache.org/bugzilla/attachment.cgi?id=38559&action=edit
normal request log comparison
**Perform a simple GET request pressure test on the HTTP2 (h2c) service, and
the TCP link will shutdown abnormally.**
1.By simulating 50 concurrent requests with 500 each, perform pressure testing
and packet capture on a simple GET request.
2.The process found that the TCP link would be disconnected.
3.The reason is that tomcat sent a WINDOW_UPDATE Frame with window size value
is zero.
call Http2UpgradeHandler.endRequestBodyFrame method the dataLength is zero? Is
this reasonable?
Http2UpgradeHandler:
public void endRequestBodyFrame(int streamId, int dataLength) throws
Http2Exception, IOException {
AbstractNonZeroStream abstractNonZeroStream =
getAbstractNonZeroStream(streamId, true);
if (abstractNonZeroStream instanceof Stream) {
((Stream)
abstractNonZeroStream).getInputBuffer().onDataAvailable();
} else {
// The Stream was recycled between the call in Http2Parser to
// startRequestBodyFrame() and the synchronized block that contains
// the call to this method. This means the bytes read will have
been
// written to the original stream and, effectively, swallowed.
// Therefore, need to notify that those bytes were swallowed here.
onSwallowedDataFramePayload(streamId, dataLength);
}
}
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]