]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gH-80788: remove old weakset workaround for thread safety (#123388)
authorKumar Aditya <kumaraditya@python.org>
Tue, 27 Aug 2024 13:42:44 +0000 (19:12 +0530)
committerGitHub <noreply@github.com>
Tue, 27 Aug 2024 13:42:44 +0000 (19:12 +0530)
Lib/asyncio/tasks.py

index 2f8f4f08a1e11134ece6fc787b9a7f89e43185dc..2112dd4b99d17f50b9f8490648625e8ed5c4c5af 100644 (file)
@@ -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()}