From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/util/futures/_asyncio/
Date: Sat, 31 Aug 2024 19:20:59 +0000 (UTC) [thread overview]
Message-ID: <1725131185.ee17cbd807ba976491e4c657be8aa9b9a29fe059.zmedico@gentoo> (raw)
commit: ee17cbd807ba976491e4c657be8aa9b9a29fe059
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 31 19:06:25 2024 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Aug 31 19:06:25 2024 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=ee17cbd8
_safe_loop: Discard wrapped asyncio.run loop that was closed
Since commit cb0c09d8cecb, _get_running_loop can wrap loops from
asyncio.run, so these loops need to be discarded if they've been
closed.
Fixes: cb0c09d8cecb ("Support coroutine exitfuncs for non-main loops")
Bug: https://bugs.gentoo.org/938761
Bug: https://bugs.gentoo.org/761538
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>
lib/portage/util/futures/_asyncio/__init__.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/lib/portage/util/futures/_asyncio/__init__.py b/lib/portage/util/futures/_asyncio/__init__.py
index bdacda59ce..23c664e763 100644
--- a/lib/portage/util/futures/_asyncio/__init__.py
+++ b/lib/portage/util/futures/_asyncio/__init__.py
@@ -311,6 +311,13 @@ def _safe_loop(create: Optional[bool] = True) -> Optional[_AsyncioEventLoop]:
_thread_weakrefs.loops = weakref.WeakValueDictionary()
try:
loop = _thread_weakrefs.loops[thread_key]
+ if loop.is_closed():
+ # Discard wrapped asyncio.run loop that was closed.
+ del _thread_weakrefs.loops[thread_key]
+ if loop is _thread_weakrefs.mainloop:
+ _thread_weakrefs.mainloop = None
+ loop = None
+ raise KeyError(thread_key)
except KeyError:
if not create:
return None
next reply other threads:[~2024-08-31 19:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-31 19:20 Zac Medico [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-09-01 7:02 [gentoo-commits] proj/portage:master commit in: lib/portage/util/futures/_asyncio/ Zac Medico
2024-09-01 7:02 Zac Medico
2024-09-01 7:02 Zac Medico
2024-08-19 14:49 Zac Medico
2024-08-19 14:49 Zac Medico
2024-02-22 15:36 Zac Medico
2024-02-21 16:00 Zac Medico
2021-09-20 5:36 Zac Medico
2021-03-07 15:17 Zac Medico
2021-03-07 5:28 Zac Medico
2021-03-06 9:14 Zac Medico
2020-12-07 8:41 Zac Medico
2020-08-03 19:30 Zac Medico
2020-06-18 18:06 Zac Medico
2020-02-29 4:33 Zac Medico
2019-10-18 3:43 Zac Medico
2019-05-18 22:25 Zac Medico
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1725131185.ee17cbd807ba976491e4c657be8aa9b9a29fe059.zmedico@gentoo \
--to=zmedico@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox