Issue 8581: Logging handlers do not handle double-closing very well (original) (raw)

Created on 2010-04-30 20:34 by Jason.Baker, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
logging.patch Jason.Baker,2010-04-30 20:36 A patch for this bug
Messages (7)
msg104662 - (view) Author: Jason Baker (Jason.Baker) Date: 2010-04-30 20:34
The logging handler does not handle double-closing very well: >>> from logging import StreamHandler >>> h = StreamHandler() >>> h.close() >>> h.close() Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.6/logging/__init__.py", line 705, in close del _handlers[self] KeyError: <logging.StreamHandler instance at 0xb7609c8c> There are two possible approaches to this: 1. Raise a better error. 2. Ignore the duplicate close. This patch takes option 2 as this is likely not indicative of any kind of programmer error, but it shouldn't be too difficult to take option 1 instead.
msg104663 - (view) Author: Jason Baker (Jason.Baker) Date: 2010-04-30 20:36
Adding patch
msg104694 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2010-05-01 07:43
This part of the code has been changed in trunk (to use weak references), and the error does not occur in Python 2.7/3.2. I'm not sure I fully agree with your assertion that it's not a programmer error to close a handler twice - this could certainly happen as a result of a bug in the application. So, I'm not sure (now that we're in Python 2.7 beta) that it's worth backporting this to 2.6.6. Thoughts?
msg104696 - (view) Author: Santoso Wijaya (santoso.wijaya) * Date: 2010-05-01 08:22
File-like objects handle multiple close() gracefully, silently making the second and subsequent close() calls to an already closed I/O object do nothing. Why can't the same expectation be applied to logging handlers?
msg104699 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2010-05-01 09:51
----- Original Message ---- > From: Santoso Wijaya <report@bugs.python.org> > File-like objects handle multiple close() gracefully, silently > making the second and subsequent close() calls to an already closed I/O object > do nothing. Why can't the same expectation be applied to logging > handlers? I'm not objecting to the change on philosophical grounds, merely commenting that it doesn't happen in 2.7/3.2 and suggesting it's not worth fixing in 2.6/3.1.
msg104714 - (view) Author: Jason Baker (Jason.Baker) Date: 2010-05-01 13:46
Vinay, I don't necessarily disagree with you. However, this appears to be a pretty trivial change. If there is a 2.6.6, I think this should go in it.
msg104848 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2010-05-03 15:40
Fix checked into release26-maint (r80713).
History
Date User Action Args
2022-04-11 14:57:00 admin set github: 52827
2010-05-03 15:40:46 vinay.sajip set status: open -> closedresolution: out of date -> fixedmessages: +
2010-05-01 13:46:22 Jason.Baker set messages: +
2010-05-01 09:51:58 vinay.sajip set messages: +
2010-05-01 08:22:52 santoso.wijaya set status: pending -> openmessages: +
2010-05-01 07:43:16 vinay.sajip set status: open -> pendingresolution: out of datemessages: +
2010-04-30 21:57:36 santoso.wijaya set nosy: + santoso.wijaya
2010-04-30 20:58:33 benjamin.peterson set assignee: vinay.sajipnosy: + vinay.sajip
2010-04-30 20:36:19 Jason.Baker set files: + logging.patchkeywords: + patchmessages: +
2010-04-30 20:34:30 Jason.Baker create