From d3a18751387072b9cbc44b679398e87055cb8c8d Mon Sep 17 00:00:00 2001 From: Craig Robson Date: Sat, 17 Jun 2023 07:48:39 -0700 Subject: [PATCH 1/2] gh-105623 Fix performance degradation in logging RotatingFileHandler The check for whether the log file is a real file is expensive on NFS filesystems. This commit reorders the rollover condition checking to not do the file type check if the expected file size is less than the rotation threshold. --- Lib/logging/handlers.py | 6 +++--- .../Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 9847104446eaf6..482822e02e5131 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -187,15 +187,15 @@ def shouldRollover(self, record): Basically, see if the supplied record would cause the file to exceed the size limit we have. """ - # See bpo-45401: Never rollover anything other than regular files - if os.path.exists(self.baseFilename) and not os.path.isfile(self.baseFilename): - return False if self.stream is None: # delay was set... self.stream = self._open() if self.maxBytes > 0: # are we rolling over? msg = "%s\n" % self.format(record) self.stream.seek(0, 2) #due to non-posix-compliant Windows feature if self.stream.tell() + len(msg) >= self.maxBytes: + # See bpo-45401: Never rollover anything other than regular files + if os.path.exists(self.baseFilename) and not os.path.isfile(self.baseFilename): + return False return True return False diff --git a/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst b/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst new file mode 100644 index 00000000000000..b973f51e8e8a1e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst @@ -0,0 +1 @@ +Fix performance degradation in logging logging RotatingFileHandler. From 84ad7d843855d119ecafcaed76bb966aca2548d3 Mon Sep 17 00:00:00 2001 From: Craig Robson Date: Sun, 18 Jun 2023 08:23:25 -0700 Subject: [PATCH 2/2] Update Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst Co-authored-by: Oleg Iarygin --- .../Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst b/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst index b973f51e8e8a1e..2890674aac4bbc 100644 --- a/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst +++ b/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst @@ -1 +1,2 @@ -Fix performance degradation in logging logging RotatingFileHandler. +Fix performance degradation in +:class:`logging.handlers.RotatingFileHandler`. Patch by Craig Robson.