vfs: modernize the detection of the main thread
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 19 Sep 2024 21:03:10 -0400
changeset 51883 1edac12af730
parent 51882 2391a5fa111e
child 51884 f79f98733a5b
vfs: modernize the detection of the main thread There weren't a lot of good choices when py27 was supported, but starting with py34, `threading.main_thread()` is available. This gets us away from an undocumented, internal symbol, and drops a pytype suppression statement. It is also apparently no longer reliable after a process fork.[1][2] [1] https://stackoverflow.com/a/23207116 [2] https://github.com/python/cpython/blob/v3.6.3/Lib/threading.py#L1334
mercurial/vfs.py
--- a/mercurial/vfs.py	Sun Sep 22 17:06:31 2024 -0400
+++ b/mercurial/vfs.py	Thu Sep 19 21:03:10 2024 -0400
@@ -373,10 +373,7 @@
         # Sharing backgroundfilecloser between threads is complex and using
         # multiple instances puts us at risk of running out of file descriptors
         # only allow to use backgroundfilecloser when in main thread.
-        if not isinstance(
-            threading.current_thread(),
-            threading._MainThread,  # pytype: disable=module-attr
-        ):
+        if threading.current_thread() is not threading.main_thread():
             yield
             return
         vfs = getattr(self, 'vfs', self)
@@ -575,9 +572,9 @@
                 )
             fp = checkambigatclosing(fp)
 
-        if backgroundclose and isinstance(
-            threading.current_thread(),
-            threading._MainThread,  # pytype: disable=module-attr
+        if (
+            backgroundclose
+            and threading.current_thread() is threading.main_thread()
         ):
             if (
                 not self._backgroundfilecloser  # pytype: disable=attribute-error