]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-90155: Fix bug in asyncio.Semaphore and strengthen FIFO guarantee (#93222)
authorCyker Way <cykerway@gmail.com>
Thu, 22 Sep 2022 16:34:45 +0000 (12:34 -0400)
committerGitHub <noreply@github.com>
Thu, 22 Sep 2022 16:34:45 +0000 (09:34 -0700)
commit24e03796248ab8c7f62d715c28156abe2f1c0d20
tree879aa43c7a10fdd47e0b86a5598edb063a9d19aa
parent8fd2c3b75b90c4ee391894aa5094615bbdb6242f
gh-90155: Fix bug in asyncio.Semaphore and strengthen FIFO guarantee (#93222)

The main problem was that an unluckily timed task cancellation could cause
the semaphore to be stuck. There were also doubts about strict FIFO ordering
of tasks allowed to pass.

The Semaphore implementation was rewritten to be more similar to Lock.
Many tests for edge cases (including cancellation) were added.
Lib/asyncio/locks.py
Lib/test/test_asyncio/test_locks.py
Misc/NEWS.d/next/Library/2022-05-25-15-57-39.gh-issue-90155.YMstB5.rst [new file with mode: 0644]