Include number of maximum active streams in exception message (#11644)

Motivation:

When users receive "Maximum active streams violated for this endpoint"
exception, it's useful to know what is the current max streams limit on
HTTP/2 connection.

Modifications:

- Include current number of maximum active streams in exception message;

Result:

Easier debugging of HTTP/2 connections.
This commit is contained in:
Idel Pivnitskiy 2021-09-03 01:53:36 -05:00 committed by GitHub
parent 47bababfc7
commit 37c03cce5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 3 deletions

View File

@ -483,8 +483,10 @@ public class DefaultHttp2Connection implements Http2Connection {
@Override
public Http2Stream open(boolean halfClosed) throws Http2Exception {
state = activeState(id, state, isLocal(), halfClosed);
if (!createdBy().canOpenStream()) {
throw connectionError(PROTOCOL_ERROR, "Maximum active streams violated for this endpoint.");
final DefaultEndpoint<? extends Http2FlowController> endpoint = createdBy();
if (!endpoint.canOpenStream()) {
throw connectionError(PROTOCOL_ERROR, "Maximum active streams violated for this endpoint: " +
endpoint.maxActiveStreams());
}
activate();
@ -897,7 +899,8 @@ public class DefaultHttp2Connection implements Http2Connection {
}
boolean isReserved = state == RESERVED_LOCAL || state == RESERVED_REMOTE;
if (!isReserved && !canOpenStream() || isReserved && numStreams >= maxStreams) {
throw streamError(streamId, REFUSED_STREAM, "Maximum active streams violated for this endpoint.");
throw streamError(streamId, REFUSED_STREAM, "Maximum active streams violated for this endpoint: " +
(isReserved ? maxStreams : maxActiveStreams));
}
if (isClosed()) {
throw connectionError(INTERNAL_ERROR, "Attempted to create stream id %d after connection was closed",