Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is PR is refactoring the current throttling metric support with a view to implementing throttling.
Currently, there were three different throttle time field implementations:
ThrottleTimeMs int32
field - for example, onMetadataResponse
,ThrottleTime int32
field - for example, onLeaveGroupResponse
, andThrottleTime time.Duration
field - for example, onProduceResponse
.It would be nice to make these more consistent but, since they are public fields, that would need to be a v2 change.
Therefore, in order to make progress now, this PR implements a common, private
throttleTime() time.Duration
method on all of the responses covered by the above three field types. TheupdateThrottleMetric
implementation is then refactored to apply more generally to responses that have the new common method (via a trivial new interfacethrottleSupport
).This should make it possible to implement throttling support - i.e. delaying future requests in accordance with KIP-219.
Two typos are also fixed - one related and one randomly spotted while in
broker.go
.