]> granicus.if.org Git - python/commitdiff
bpo-30805: Avoid race condition with debug logging (GH-7545)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 8 Jun 2018 22:47:45 +0000 (15:47 -0700)
committerGitHub <noreply@github.com>
Fri, 8 Jun 2018 22:47:45 +0000 (15:47 -0700)
Supersedes https://github.com/python/cpython/pull/2490
(cherry picked from commit 12f482e0ae33021c04264294f33fa6baa9617cec)

Co-authored-by: Yury Selivanov <yury@magic.io>
Lib/asyncio/base_events.py
Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst [new file with mode: 0644]

index 90757db41c63e0014459822d9dc051f22e0cdf5b..083f45df2ffdf4b312ab52c5490ea18df84da01e 100644 (file)
@@ -1153,6 +1153,7 @@ class BaseEventLoop(events.AbstractEventLoop):
         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
@@ -1160,7 +1161,7 @@ class BaseEventLoop(events.AbstractEventLoop):
             self._log_subprocess(debug_log, stdin, stdout, stderr)
         transport = yield from 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
 
@@ -1182,6 +1183,7 @@ class BaseEventLoop(events.AbstractEventLoop):
                                 "a bytes or text string, not %s"
                                 % 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
@@ -1190,7 +1192,7 @@ class BaseEventLoop(events.AbstractEventLoop):
         transport = yield from 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 (file)
index 0000000..e1ba576
--- /dev/null
@@ -0,0 +1 @@
+Avoid race condition with debug logging