]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101766: Fix refleak for _BlockingOnManager resources (gh-101942)
authorDong-hee Na <donghee.na@python.org>
Fri, 17 Feb 2023 10:14:07 +0000 (19:14 +0900)
committerGitHub <noreply@github.com>
Fri, 17 Feb 2023 10:14:07 +0000 (19:14 +0900)
Lib/importlib/_bootstrap.py

index bebe7e15cbce6742c76a2bcee6dc40886bbc9564..1ef7b6adb04434ef3c1948d2ee9c5547899444d8 100644 (file)
@@ -85,6 +85,11 @@ class _BlockingOnManager:
     def __exit__(self, *args, **kwargs):
         """Remove self.lock from this thread's _blocking_on list."""
         self.blocked_on.remove(self.lock)
+        if len(self.blocked_on) == 0:
+            # gh-101766: glboal cache should be cleaned-up
+            # if there is no more _blocking_on for this thread.
+            del _blocking_on[self.thread_id]
+            del self.blocked_on
 
 
 class _DeadlockError(RuntimeError):