https://github.com/python/cpython/commit/e310d2bd71b72ad050e20a3da30636e0970a6fc2
commit: e310d2bd71b72ad050e20a3da30636e0970a6fc2
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2024-06-28T09:23:38Z
summary:

[3.13] gh-105623 Fix performance degradation in logging RotatingFileHandler 
(GH-105887) (GH-121117)

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.

(cherry picked from commit e9b4ec614b66d11623b80471409c16a109f888d5)

Co-authored-by: Craig Robson <[email protected]>
Co-authored-by: Oleg Iarygin <[email protected]>

files:
A Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst
M Lib/logging/handlers.py

diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 410bd9851f366d..0fa40f56e998d5 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -193,15 +193,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..2890674aac4bbc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-17-09-07-06.gh-issue-105623.5G06od.rst
@@ -0,0 +1,2 @@
+Fix performance degradation in
+:class:`logging.handlers.RotatingFileHandler`. Patch by Craig Robson.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to