Skip to content

[MINOR][CONNECT] Convert metadata to list to prevent silent metadata loss on retry/reattach - #58210

Open
zainmirzaaa wants to merge 1 commit into
apache:masterfrom
zainmirzaaa:fix-metadata-reattach-issue
Open

[MINOR][CONNECT] Convert metadata to list to prevent silent metadata loss on retry/reattach#58210
zainmirzaaa wants to merge 1 commit into
apache:masterfrom
zainmirzaaa:fix-metadata-reattach-issue

Conversation

@zainmirzaaa

Copy link
Copy Markdown

What changes were proposed in this pull request?

self._metadata = metadata → self._metadata = list(metadata) in ExecutePlanResponseReattachableIterator.init.

Why are the changes needed?

self._metadata is reused across multiple RPCs. If a generator/iterator is passed, it's consumed on the first call and subsequent RPCs get empty metadata.

Does this PR introduce any user-facing change?

No.

How was this patch tested?

Added test_metadata_generator_is_stored_as_list in test_reattach.py.
Was this patch authored or co-authored using generative AI tooling?

Yes: opencode/mimo-v2-free

Closes #57785

…o prevent silent metadata loss on retry/reattach
# Note: This is not retried, because no error would ever be thrown here, and GRPC will only
# throw error on first self._has_next().
self._metadata = metadata
self._metadata = list(metadata)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make _metadata itself a list?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[SQL][CONNECT] SparkConnectClient may drop metadata (auth headers) on retried/reattached RPCs if metadata is a non-list iterable

2 participants