fix: Fix instance registration cleanup on early iterator termination #1216
+377
−109
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 makes two related changes to attempt to address #1205
Wrap the generator used for execute query in try-finally and call close in the finally block. This cleans up the instance registration used by ping and warm even when iteration fails or is exited early.
Change the instance registration method so that it does not need to take a reference to the owner. When an iterator is abandoned early, with no error, finally won't run until it is GC'ed. This reference in the registration future prevents GC though. Changing this to take the id and app profile directly resolves the issue.