Skip to content

Fixed cancellation retry for tasks with native cancellation - #1260

Open
subotac wants to merge 2 commits into
agronholm:masterfrom
subotac:fix-asyncio-cancellation-retry
Open

Fixed cancellation retry for tasks with native cancellation#1260
subotac wants to merge 2 commits into
agronholm:masterfrom
subotac:fix-asyncio-cancellation-retry

Conversation

@subotac

@subotac subotac commented Jul 31, 2026

Copy link
Copy Markdown

NOTE Erasing or replacing the contents of this template will result in your pull
request being summarily closed without consideration!

Changes

Fixes #1258.

Avoid retrying AnyIO cancellation delivery when the underlying asyncio task already has native cancellation pending. This prevents _must_cancel tasks from being unnecessarily re-armed after leaving a
cancelled scope.

Checklist

If this is a user-facing code change, like a bugfix or a new feature, please ensure that
you've fulfilled the following conditions (where applicable):

  • You've added tests (in tests/) which would fail without your patch
  • You've updated the documentation (in docs/), in case of behavior changes or new
    features
  • You've added a new changelog entry (in docs/versionhistory.rst).

If this is a trivial change, like a typo fix or a code reformatting, then you can ignore
these instructions.

Updating the changelog

If there are no entries after the last release, use **UNRELEASED** as the version.
If, say, your patch fixes issue #123, the entry should look like this:

  • Fix big bad boo-boo in task groups
    (#123 <https://github.com/agronholm/anyio/issues/123>_; PR by @yourGithubAccount)

If there's no issue linked, just link to your pull request instead by updating the
changelog after you've created the PR.

@agronholm agronholm added this to the 4.15 milestone Aug 7, 2026
@subotac
subotac force-pushed the fix-asyncio-cancellation-retry branch from 314f71b to b750257 Compare August 7, 2026 17:44
@agronholm

Copy link
Copy Markdown
Owner

Wouldn't this mean that cancellation might not restart for natively cancelled tasks where the target coroutine function caught the cancellation?

@agronholm agronholm removed this from the 4.15 milestone Aug 15, 2026
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.

_deliver_cancellation re-arms for tasks skipped via _must_cancel, for which the retry can never do anything

2 participants