Skip to content

[CELEBORN-2451] Make DRA safe under AUTO fallback by tying supportsReliableStorage to fallback policy - #3834

Open
venkata91 wants to merge 2 commits into
apache:mainfrom
venkata91:dra-auto-fallback-reliable-storage
Open

[CELEBORN-2451] Make DRA safe under AUTO fallback by tying supportsReliableStorage to fallback policy#3834
venkata91 wants to merge 2 commits into
apache:mainfrom
venkata91:dra-auto-fallback-reliable-storage

Conversation

@venkata91

@venkata91 venkata91 commented Aug 31, 2026

Copy link
Copy Markdown

What changes were proposed in this pull request?

  • Tie supportsReliableStorage() to the fallback policy: true only for
    NEVER, false for AUTO/ALWAYS (was keyed on deprecated
    forceFallback, so it returned true under AUTO).
  • Make SparkShuffleManager DRA warnings policy-aware; log the
    registerShuffle fallback at error only when shuffle tracking is also off.

Why are the changes needed?

  • Fallback is per-shuffle, but supportsReliableStorage() is one global flag.
    Under AUTO a shuffle can fall back to local-disk SortShuffleManager;
    that output dies with a DRA-reclaimed executor, causing FetchFailedException.
    Nothing prevents the unsafe config today.
  • Reporting false under AUTO/ALWAYS lets Spark's ExecutorAllocationManager
    fail fast unless a shuffle service, shuffle tracking, or decommissioning is on,
    so AUTO is safe with shuffleTracking.enabled=true; NEVER keeps the fast path.
  • Trade-off: under AUTO, reliableStorage=false makes Spark recompute a lost
    executor's map stages even though Celeborn still holds the data; NEVER avoids
    this. Removing it needs a Spark-side change (per-shuffle reliable-storage
    granularity), tracked as a follow-up.

Does this PR resolve a correctness bug?

  • Yes

Does this PR introduce any user-facing change?

  • Yes: with AUTO (default), DRA without shuffle service and without shuffle
    tracking now fails fast at startup. Enable tracking or set NEVER.

How was this patch tested?

  • New testReliableStorageFollowsFallbackPolicy; -Dtest=SparkShuffleManagerSuite passes (5/5), spotless clean.

…bleStorage to fallback policy

Report reliable storage only for fallback policy NEVER. Under AUTO/ALWAYS a
shuffle can fall back to the local-disk SortShuffleManager, whose output is
lost when the executor is reclaimed, so claiming reliable storage lets DRA
release those executors and triggers FetchFailed. Reporting false makes
Spark's ExecutorAllocationManager require shuffle tracking (or a shuffle
service) under DRA, failing fast at startup otherwise.

Make the SparkShuffleManager DRA guidance policy-aware and downgrade the
registerShuffle fallback log from error to warn when shuffle tracking is on.
@github-actions github-actions Bot added correctness Correctness bugfix module:client module:spark and removed correctness Correctness bugfix labels Aug 31, 2026
@github-actions github-actions Bot added the correctness Correctness bugfix label Aug 31, 2026
@venkata91 venkata91 changed the title [WIP][SPARK] Make DRA safe under AUTO fallback by tying supportsReliableStorage to fallback policy [CELEBORN-2451] Make DRA safe under AUTO fallback by tying supportsReliableStorage to fallback policy Aug 31, 2026
@venkata91
venkata91 marked this pull request as ready for review August 31, 2026 18:20
@venkata91

venkata91 commented Aug 31, 2026

Copy link
Copy Markdown
Author

cc @SteNicholas for review.

@venkata91

Copy link
Copy Markdown
Author

cc @sunchao

@venkata91

Copy link
Copy Markdown
Author

Gentle ping @SteNicholas @1fanwang !! Thanks !!

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant