Add references from Client and Statement to each other#1048
Draft
sodabrew wants to merge 1 commit into
Draft
Conversation
7c4de13 to
4584288
Compare
@sodabrew This is true: When a session ends, whether normally or abnormally, its prepared statements no longer exist. If auto-reconnect is enabled, the client is not notified that the connection was lost. For this reason, clients may wish to disable auto-reconnect. See Automatic Reconnection Control. |
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.
This is to prevent out of order GC. Because GC of a Statement object generates server commands to release the statement, the client connection can be in the middle of some other operation like streaming a result set that doesn't allow other commands.
Add a new accessor
Client#prepared_statementsthat returns the list of all outstanding statements. This is sort of a nice-to-have that falls out of having the Statement object references in the Client object.This is not a complete fix yet. It crashes under large numbers of objects. Also need to document if/why the list of Statements should be/not be freed when the Client connection is closed. I think the server will automatically release the prepared statements when the connection drops, but I'm not sure.
Fixes #1043.