]> granicus.if.org Git - python/commitdiff
Issue #9501: Fixed logging regressions in cleanup code.
authorVinay Sajip <vinay_sajip@yahoo.co.uk>
Mon, 23 Aug 2010 17:50:30 +0000 (17:50 +0000)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>
Mon, 23 Aug 2010 17:50:30 +0000 (17:50 +0000)
Lib/logging/__init__.py
Misc/NEWS

index dca00179ed393a411483faf6c1dd1b7ff2d81eb3..b4eaab62757bd8686903b93db1c7ba1077fae0d7 100644 (file)
@@ -609,12 +609,16 @@ def _removeHandlerRef(wr):
     """
     Remove a handler reference from the internal cleanup list.
     """
-    _acquireLock()
-    try:
-        if wr in _handlerList:
-            _handlerList.remove(wr)
-    finally:
-        _releaseLock()
+    # This function can be called during module teardown, when globals are
+    # set to None. If _acquireLock is None, assume this is the case and do
+    # nothing.
+    if _acquireLock is not None:
+        _acquireLock()
+        try:
+            if wr in _handlerList:
+                _handlerList.remove(wr)
+        finally:
+            _releaseLock()
 
 def _addHandlerRef(handler):
     """
@@ -1604,8 +1608,16 @@ def shutdown(handlerList=_handlerList):
         #we just ignore them if raiseExceptions is not set
         try:
             h = wr()
-            h.flush()
-            h.close()
+            if h:
+                try:
+                    h.flush()
+                    h.close()
+                except (IOError, ValueError):
+                    # Ignore errors which might be caused
+                    # because handlers have been closed but
+                    # references to them are still around at
+                    # application exit.
+                    pass
         except:
             if raiseExceptions:
                 raise
index 6e49fac5b0a991c0e181e46e6ccb6e599910d319..75375abe399b151784a99fb22d76e8425f459e3e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -123,6 +123,8 @@ Extensions
 Library
 -------
 
+- Issue #9501: Fixed logging regressions in cleanup code.
+
 - Fix functools.total_ordering() to actually work.
 
 - Issue #9572: Importlib should not raise an exception if a directory it