fix(flight): make StreamChunksFromReader ctx aware and cancellation-safe #615
+289
−19
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.
Rationale for this change
StreamChunksFromReaderpreviously did not observe context cancellation. As a result, if a client disconnected early, the reader could continue producing data indefinitely, potentially blocking on channel sends, leakingRecordBatchobjects, leaking the reader, and consuming unbounded memory and CPU (this observation triggered this PR).This fix ensures that data streaming promptly stops when the client disconnects.
What changes are included in this PR?
StreamChunksFromReadernow accepts acontext.Context.DoGet, to ensure it continues to work with the context-awareStreamChunksFromReader.Are these changes tested?
Are there any user-facing changes?
StreamChunksFromReadernow accepts acontext.Context.