Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core] Stop waiting for dependencies when cancelling tasks #48661

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

dayshah
Copy link
Contributor

@dayshah dayshah commented Nov 8, 2024

Why are these changes needed?

ray.cancel will not appropriately mark the outputs of it's task as cancelled if there are objects that the task depends on that are not yet completed.

  1. Inside NormalTaskSubmitter::CancelTask, before we'd have a no-op for tasks with unfinished dependencies. It would just add to the cancelled_tasks list which would be checked when the tasks's dependencies are resolved and then call FailOrRetry then. So now we're failing the task during the actual cancel, cancelling the worker lease if possible, and cancelling the dependency resolution in the dependency resolver so it is no longer in the resolver's pending_tasks. Lines 729-732
  2. Now that we're failing there we have to remove the FailOrRetry that exists when the dependencies have been resolved and the task was cancelled or else we'll end up with failing twice. old FailOrRetry
  3. The last issue was that with this new logic tasks that have been marked finished could end up inside the TaskManager::FailPendingTask which has a RAY_CHECK to make sure the status isn't Finished or Failed. Now we check before cancelling whether the task has been finished or cancelled.

Related issue number

Closes #46315

Checks

  • I've signed off every commit(by using the -s flag, i.e., git commit -s) in this PR.
  • I've run scripts/format.sh to lint the changes in this PR.
  • I've included any doc changes needed for https://docs.ray.io/en/master/.
    • I've added any new APIs to the API Reference. For example, if I added a
      method in Tune, I've added it in doc/source/tune/api/ under the
      corresponding .rst file.
  • I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
  • Testing Strategy
    • Unit tests
    • Release tests
    • This PR is not tested :(

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.

[core] Cancelling tasks who is waiting for dependencies hangs result objects
2 participants