[Python-checkins] bpo-30805: Avoid race condition with debug logging (GH-7545)

Miss Islington (bot) webhook-mailer at python.org
Fri Jun 8 18:42:10 EDT 2018


https://github.com/python/cpython/commit/21f4c780a1de99bdb37abf57445f0c942449b45b
commit: 21f4c780a1de99bdb37abf57445f0c942449b45b
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-06-08T15:42:07-07:00
summary:

bpo-30805: Avoid race condition with debug logging (GH-7545)


Supersedes https://github.com/python/cpython/pull/2490
(cherry picked from commit 12f482e0ae33021c04264294f33fa6baa9617cec)

Co-authored-by: Yury Selivanov <yury at magic.io>

files:
A Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst
M Lib/asyncio/base_events.py

diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 68a1ebe623b8..6b4756ad0882 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -1476,6 +1476,7 @@ def _log_subprocess(self, msg, stdin, stdout, stderr):
         if bufsize != 0:
             raise ValueError("bufsize must be 0")
         protocol = protocol_factory()
+        debug_log = None
         if self._debug:
             # don't log parameters: they may contain sensitive information
             # (password) and may be too long
@@ -1483,7 +1484,7 @@ def _log_subprocess(self, msg, stdin, stdout, stderr):
             self._log_subprocess(debug_log, stdin, stdout, stderr)
         transport = await self._make_subprocess_transport(
             protocol, cmd, True, stdin, stdout, stderr, bufsize, **kwargs)
-        if self._debug:
+        if self._debug and debug_log is not None:
             logger.info('%s: %r', debug_log, transport)
         return transport, protocol
 
@@ -1504,6 +1505,7 @@ def _log_subprocess(self, msg, stdin, stdout, stderr):
                     f"program arguments must be a bytes or text string, "
                     f"not {type(arg).__name__}")
         protocol = protocol_factory()
+        debug_log = None
         if self._debug:
             # don't log parameters: they may contain sensitive information
             # (password) and may be too long
@@ -1512,7 +1514,7 @@ def _log_subprocess(self, msg, stdin, stdout, stderr):
         transport = await self._make_subprocess_transport(
             protocol, popen_args, False, stdin, stdout, stderr,
             bufsize, **kwargs)
-        if self._debug:
+        if self._debug and debug_log is not None:
             logger.info('%s: %r', debug_log, transport)
         return transport, protocol
 
diff --git a/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst b/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst
new file mode 100644
index 000000000000..e1ba57675397
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst
@@ -0,0 +1 @@
+Avoid race condition with debug logging



More information about the Python-checkins mailing list