mirror of
https://github.com/python/cpython.git
synced 2024-11-26 03:14:27 +08:00
Added _handlerList to allow shutdown to flush and close handlers in reverse order of creation (see SF# 1282539)
This commit is contained in:
parent
e029da0aca
commit
0ee9ba258e
@ -544,6 +544,7 @@ class Filterer:
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
_handlers = {} #repository of handlers (for flushing when shutdown called)
|
||||
_handlerList = [] # added to allow handlers to be removed in reverse of order initialized
|
||||
|
||||
class Handler(Filterer):
|
||||
"""
|
||||
@ -566,6 +567,7 @@ class Handler(Filterer):
|
||||
_acquireLock()
|
||||
try: #unlikely to raise an exception, but you never know...
|
||||
_handlers[self] = 1
|
||||
_handlerList.insert(0, self)
|
||||
finally:
|
||||
_releaseLock()
|
||||
self.createLock()
|
||||
@ -668,6 +670,7 @@ class Handler(Filterer):
|
||||
_acquireLock()
|
||||
try: #unlikely to raise an exception, but you never know...
|
||||
del _handlers[self]
|
||||
_handlerList.remove(self)
|
||||
finally:
|
||||
_releaseLock()
|
||||
|
||||
@ -1307,7 +1310,7 @@ def shutdown():
|
||||
|
||||
Should be called at application exit.
|
||||
"""
|
||||
for h in _handlers.keys():
|
||||
for h in _handlerList[:]: # was _handlers.keys():
|
||||
#errors might occur, for example, if files are locked
|
||||
#we just ignore them
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user