feat: add a buffer_stats() method on Connection to return allocated read/write buffer sizes#4163
Open
matt-goroff wants to merge 3 commits intolaunchbadge:mainfrom
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Live connections maintain read and write buffers for incoming and outgoing data. These buffers start at a default 8kb, but grow as more space is required. An earlier PR added support for shrinking these buffer back down to 8kb (see discussion), but there is otherwise no observability or tuning that can be done.
This PR adds a
buffer_stats()method onConnectionwhich returns an optional struct containing the currently allocated capacity of the read and write buffers. This gives clients some observability into buffer allocations, which can be used for monitoring/metrics or even for strategic use ofshrink_buffers(). Connection implementations can optionally implement this feature, where the default implementation just returnsNoneto indicate there are no stats available. This PR provides an implementation for the Postgres and MySQL connections. SQLite returns None as it does not use network buffers.Is this a breaking change?
No. A default implementation is provided for all connections.