]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-90155: Fix bug in asyncio.Semaphore and strengthen FIFO guarantee (GH-93222)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 22 Sep 2022 16:58:35 +0000 (09:58 -0700)
committerPablo Galindo <pablogsal@gmail.com>
Mon, 24 Oct 2022 15:45:38 +0000 (16:45 +0100)
commit56145c696323d6fa5c346d6bcf3a7b7ff4410cef
treef82318c5254a4a4dd8248fb55301e6fd9753cec7
parent67f5d24e44cd53f23b814a735718cfca36f553c5
gh-90155: Fix bug in asyncio.Semaphore and strengthen FIFO guarantee (GH-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.
(cherry picked from commit 24e03796248ab8c7f62d715c28156abe2f1c0d20)

Co-authored-by: Cyker Way <cykerway@gmail.com>
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]