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 Norman Maurer
parent ced712d4f7
commit 3a1a3de4e9

View File

@ -474,8 +474,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();
@ -888,7 +890,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",