summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKumar Aditya <kumaraditya@python.org>2024-08-27 13:42:44 (GMT)
committerGitHub <noreply@github.com>2024-08-27 13:42:44 (GMT)
commit460ee5b994335994d4b5186c08f44e775b3e55fa (patch)
tree47b7e3aee35134aa2fd36851864223686a3328d7
parent03f5abf15a20f6e623282a393bc2a0affac69bb0 (diff)
downloadcpython-460ee5b994335994d4b5186c08f44e775b3e55fa.zip
cpython-460ee5b994335994d4b5186c08f44e775b3e55fa.tar.gz
cpython-460ee5b994335994d4b5186c08f44e775b3e55fa.tar.bz2
gH-80788: remove old weakset workaround for thread safety (#123388)
-rw-r--r--Lib/asyncio/tasks.py19
1 files changed, 2 insertions, 17 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 2f8f4f0..2112dd4 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -48,23 +48,8 @@ def all_tasks(loop=None):
# capturing the set of eager tasks first, so if an eager task "graduates"
# to a regular task in another thread, we don't risk missing it.
eager_tasks = list(_eager_tasks)
- # Looping over the WeakSet isn't safe as it can be updated from another
- # thread, therefore we cast it to list prior to filtering. The list cast
- # itself requires iteration, so we repeat it several times ignoring
- # RuntimeErrors (which are not very likely to occur).
- # See issues 34970 and 36607 for details.
- scheduled_tasks = None
- i = 0
- while True:
- try:
- scheduled_tasks = list(_scheduled_tasks)
- except RuntimeError:
- i += 1
- if i >= 1000:
- raise
- else:
- break
- return {t for t in itertools.chain(scheduled_tasks, eager_tasks)
+
+ return {t for t in itertools.chain(_scheduled_tasks, eager_tasks)
if futures._get_loop(t) is loop and not t.done()}