From: Vinay Sajip Date: Thu, 23 Feb 2012 20:45:03 +0000 (+0000) Subject: Fix added for recent changes in non-threading environments. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=501982226a175a9e7eeaee597e25ee6319815b7e;p=python Fix added for recent changes in non-threading environments. --- diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 4b23cb4696..d214aabbcc 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -828,9 +828,12 @@ class StreamHandler(Handler): """ Flushes the stream. """ - with self.lock: + self.acquire() + try: if self.stream and hasattr(self.stream, "flush"): self.stream.flush() + finally: + self.release() def emit(self, record): """ @@ -901,13 +904,16 @@ class FileHandler(StreamHandler): """ Closes the stream. """ - with self.lock: + self.acquire() + try: if self.stream: self.flush() if hasattr(self.stream, "close"): self.stream.close() StreamHandler.close(self) self.stream = None + finally: + self.release() def _open(self): """ diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index fe5f9bf7a1..b2950a752f 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -562,10 +562,13 @@ class SocketHandler(logging.Handler): """ Closes the socket. """ - with self.lock: + self.acquire() + try: if self.sock: self.sock.close() self.sock = None + finally: + self.release() logging.Handler.close(self) class DatagramHandler(SocketHandler): @@ -767,9 +770,12 @@ class SysLogHandler(logging.Handler): """ Closes the socket. """ - with self.lock: + self.acquire() + try: if self.unixsocket: self.socket.close() + finally: + self.release() logging.Handler.close(self) def mapPriority(self, levelName): @@ -1097,8 +1103,11 @@ class BufferingHandler(logging.Handler): This version just zaps the buffer to empty. """ - with self.lock: + self.acquire() + try: self.buffer = [] + finally: + self.release() def close(self): """ @@ -1146,17 +1155,23 @@ class MemoryHandler(BufferingHandler): records to the target, if there is one. Override if you want different behaviour. """ - with self.lock: + self.acquire() + try: if self.target: for record in self.buffer: self.target.handle(record) self.buffer = [] + finally: + self.release() def close(self): """ Flush, set the target to None and lose the buffer. """ self.flush() - with self.lock: + self.acquire() + try: self.target = None BufferingHandler.close(self) + finally: + self.release()