Repository navigation
Conversation
Retain partial-read integrity failures across physical shuffle generations to prevent Spark from accepting corrupted sibling task results after stage rerun. Preserve ordinary fetch-failure and whole-partition integrity recovery. Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 72/72 AI-Contributed/UT: 207/207
yew1eb
approved these changes
Oct 28, 2026
Contributor
|
LGTM |
This branch has not been deployed
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.
JIRA: https://issues.apache.org/jira/browse/CELEBORN-2508
What changes were proposed in this pull request?
Retain a partial-read integrity validation failure for the lifetime of the logical shuffle. Reject subsequent completion reports and shuffle generation requests, and decline conversion of that failure into a Spark fetch failure. Clear the failure when the logical shuffle is unregistered.
Why are the changes needed?
AQE can split one reducer partition across several tasks. Earlier tasks may return corrupted data before the last task reports the aggregate CRC mismatch. Spark can then regenerate the shuffle but rerun only the final missing result task, retaining the earlier corrupted results. In a controlled Spark reproduction, the query returned all 16,000 rows, including one corrupted row, after detecting the mismatch and rerunning the stage.
A new physical shuffle does not invalidate those already accepted results. Fail the query after a detected partial-read integrity failure until recovery can guarantee that every affected result is recomputed. Ordinary fetch failures and whole-partition integrity failures retain stage rerun.
Does this PR resolve a correctness bug?
Does this PR introduce any user-facing change?
A detected AQE aggregate integrity failure fails the query instead of attempting a stage rerun that may preserve corrupted results. No new configurations, RPC messages, or worker changes are required. Healthy reads do not add RPCs or per-record processing.
How was this patch tested?